home *** CD-ROM | disk | FTP | other *** search
/ User's Choice Windows CD / User's Choice Windows CD (CMS Software)(1993).iso / utility2 / wine02bx.zip / LISP / DIRED / ANGE-FTP.ELC next >
Text File  |  1993-03-28  |  108KB  |  710 lines

  1. ;;; compiled by jwz@thalidomide on Tue Aug 18 17:08:18 1992
  2. ;;; from file /u/jwz/emacs19/lisp/dired/ange-ftp.el
  3. ;;; emacs version 19.2.2 Lucid.
  4. ;;; bytecomp version 2.08;  2-aug-92.
  5. ;;; optimization is on.
  6. ;;; this file uses opcodes which do not exist in Emacs18.
  7.  
  8. (if (and (boundp 'emacs-version)
  9.      (or (and (boundp 'epoch::version) epoch::version)
  10.          (string-lessp emacs-version "19")))
  11.     (error "This file was compiled for Emacs19."))
  12.  
  13. (defvar ange-ftp-path-format '("^/\\(\\([^@/:]*\\)@\\)?\\([^@/:]*\\):\\(.*\\)" 3 2 4) "\
  14. *Format of a fully expanded remote pathname.  This is a cons
  15. (REGEXP . (HOST USER PATH)), where REGEXP is a regular expression matching
  16. the full remote pathname, and HOST, USER, and PATH are the numbers of
  17. parenthesized expressions in REGEXP for the components (in that order).")
  18. (defvar ange-ftp-multi-msgs "^220-\\|^230-\\|^226\\|^25.-\\|^221-\\|^200-\\|^530-\\|^4[25]1-" "\
  19. *Regular expression matching messages from the ftp process that start
  20. a multiline reply.")
  21. (defvar ange-ftp-good-msgs "^220 \\|^230 \\|^226 \\|^25. \\|^221 \\|^200 \\|^[Hh]ash mark" "\
  22. *Regular expression matching messages from the ftp process that indicate
  23. that the action that was initiated has completed successfully.")
  24. (defvar ange-ftp-skip-msgs (concat "^200 \\(PORT\\|Port\\) \\|^331 \\|^150 \\|^350 \\|^[0-9]+ bytes \\|" "^Connected \\|^$\\|^Remote system\\|^Using\\|^ \\|Password:\\|" "^local:\\|^Trying\\|^125 \\|^550-\\|^221 .*oodbye") "\
  25. *Regular expression matching messages from the ftp process that can be
  26. ignored.")
  27. (defvar ange-ftp-fatal-msgs (concat "^ftp: \\|^Not connected\\|^530 \\|^4[25]1 \\|rcmd: \\|" "^No control connection\\|unknown host\\|^lost connection") "\
  28. *Regular expression matching messages from the FTP process that indicate
  29. something has gone drastically wrong attempting the action that was
  30. initiated and that the FTP process should (or already has) been killed.")
  31. (defvar ange-ftp-gateway-fatal-msgs "No route to host\\|Connection closed\\|No such host\\|Login incorrect" "\
  32. *Regular expression matching messages from the rlogin / telnet process that
  33. indicates that logging in to the gateway machine has gone wrong.")
  34. (defvar ange-ftp-xfer-size-msgs "^150 .* connection for .* (\\([0-9]+\\) bytes)" "\
  35. *Regular expression used to determine the number of bytes in a FTP transfer.")
  36. (defvar ange-ftp-tmp-name-template "/tmp/ange-ftp" "\
  37. *Template used to create temporary files.")
  38. (defvar ange-ftp-gateway-tmp-name-template "/tmp/ange-ftp" "\
  39. *Template used to create temporary files when ftp-ing through a gateway.
  40. Files starting with this prefix need to be accessible from BOTH the local
  41. machine and the gateway machine, and need to have the SAME name on both
  42. machines, that is, /tmp is probably NOT what you want, since that is rarely
  43. cross-mounted.")
  44. (defvar ange-ftp-netrc-filename "~/.netrc" "\
  45. *File in .netrc format to search for passwords.")
  46. (defvar ange-ftp-disable-netrc-security-check nil "\
  47. *If non-nil avoid checking permissions on the .netrc file.")
  48. (defvar ange-ftp-default-user nil "\
  49. *User name to use when none is specied in a pathname.
  50. If nil, then the name under which the user is logged in is used.
  51. If non-nil but not a string, the user is prompted for the name.")
  52. (defvar ange-ftp-default-password nil "\
  53. *Password to use when the user is the same as ange-ftp-default-user.")
  54. (defvar ange-ftp-default-account nil "\
  55. *Account password to use when the user is the same as ange-ftp-default-user.")
  56. (defvar ange-ftp-generate-anonymous-password nil "\
  57. *If t, use a password of user@host when logging in as the anonymous user.
  58. If a string then use that as the password.
  59. If nil then prompt the user for a password.")
  60. (defvar ange-ftp-dumb-unix-host-regexp nil "\
  61. *If non-nil, if the host being ftp'd to matches this regexp then the FTP
  62. process uses the 'dir' command to get directory information.")
  63. (defvar ange-ftp-binary-file-name-regexp (concat "\\.Z$\\|\\.lzh$\\|\\.arc$\\|\\.zip$\\|\\.zoo$\\|\\.tar$\\|" "\\.dvi$\\|\\.ps$\\|\\.elc$\\|TAGS$\\|\\.gif$\\|" "\\.EXE\\(;[0-9]+\\)?$\\|\\.Z-part-..$") "\
  64. *If a file matches this regexp then it is transferred in binary mode.")
  65. (defvar ange-ftp-gateway-host nil "\
  66. *Name of host to use as gateway machine when local FTP isn't possible.")
  67. (defvar ange-ftp-local-host-regexp ".*" "\
  68. *If a host being FTP'd to matches this regexp then the ftp process is started
  69. locally, otherwise the FTP process is started on `ange-ftp-gateway-host'
  70. instead.")
  71. (defvar ange-ftp-gateway-program-interactive nil "\
  72. *If non-nil then the gateway program is expected to connect to the gateway
  73. machine and eventually give a shell prompt.  Both telnet and rlogin do something
  74. like this.")
  75. (defvar ange-ftp-gateway-program (byte-code "┴=½é┬ç├ç" [system-type hpux "remsh" "rsh"] 2) "\
  76. *Name of program to spawn a shell on the gateway machine.  Valid candidates
  77. are rsh (remsh on hp-ux), telnet and rlogin.  See also the gateway variable
  78. above.")
  79. (defvar ange-ftp-gateway-prompt-pattern "^[^#$%>;]*[#$%>;] *" "\
  80. *Regexp used to detect that the logging-in sequence is completed on the
  81. gateway machine and that the shell is now awaiting input.  Make this regexp as
  82. strict as possible; it shouldn't match *anything* at all except the user's
  83. initial prompt.  The above string will fail under most SUN-3's since it
  84. matches the login banner.")
  85. (defvar ange-ftp-gateway-setup-term-command (byte-code "┴=½é┬ç├ç" [system-type hpux "stty -onlcr -echo\n" "stty -echo nl\n"] 2) "\
  86. *Command to use after logging in to the gateway machine to stop the terminal
  87. echoing each command and to strip out trailing ^M characters.")
  88. (defvar ange-ftp-smart-gateway nil "\
  89. *If the gateway FTP is smart enough to use proxy server, then don't bother
  90. telnetting etc, just issue a user@host command instead.")
  91. (defvar ange-ftp-smart-gateway-port "21" "\
  92. *Port on gateway machine to use when smart gateway is in operation.")
  93. (defvar ange-ftp-send-hash t "\
  94. *If non-nil, send the HASH command to the FTP client.")
  95. (defvar ange-ftp-binary-hash-mark-size nil "\
  96. *Default size, in bytes, between hash-marks when transferring a binary file.
  97. If NIL, this variable will be locally overridden if the FTP client outputs a
  98. suitable response to the HASH command.  If non-NIL then this value takes
  99. precedence over the local value.")
  100. (defvar ange-ftp-ascii-hash-mark-size 1024 "\
  101. *Default size, in bytes, between hash-marks when transferring an ASCII file.
  102. This variable is buffer-local and will be locally overridden if the FTP client
  103. outputs a suitable response to the HASH command.")
  104. (defvar ange-ftp-process-verbose t "\
  105. *If non-NIL then be chatty about interaction with the FTP process.")
  106. (defvar ange-ftp-ftp-program-name "ftp" "\
  107. *Name of FTP program to run.")
  108. (defvar ange-ftp-gateway-ftp-program-name "ftp" "\
  109. *Name of FTP program to run on gateway machine.
  110. Some AT&T folks claim to use something called `pftp' here.")
  111. (defvar ange-ftp-ftp-program-args '("-i" "-n" "-g" "-v") "\
  112. *A list of arguments passed to the FTP program when started.")
  113. (defvar ange-ftp-nslookup-program nil "\
  114. *If non-NIL then a string naming nslookup program.")
  115. (defvar ange-ftp-make-backup-files nil "\
  116. *A list of operating systems for which ange-ftp will make Emacs backup
  117. files files on the remote host. For example, '(unix) makes sense, but
  118. '(unix vms) or '(vms) would be silly, since vms makes its own backups.")
  119. (defvar ange-ftp-retry-time 5 "\
  120. *Number of seconds to wait before retrying if a file or listing
  121. doesn't arrive. This might need to be increased for very slow connections.")
  122. (defvar ange-ftp-auto-save 0 "\
  123. If 1, allows ange-ftp files to be auto-saved.
  124. If 0, suppresses auto-saving of ange-ftp files.
  125. Don't use any other value.")
  126. (require 'backquote)
  127. (fset 'ange-ftp-make-hashtable #[(&optional size) "└    «ü┬├\"ç" [make-vector size 31 0] 3 "\
  128. Make an obarray suitable for use as a hashtable.
  129. SIZE, if supplied, should be a prime number."])
  130. (fset 'ange-ftp-map-hashtable #[(fun tbl) "└┴\n\"ç" [mapatoms #[(sym) "    ┬N    ├N\"ç" [fun sym key val] 4] tbl] 3 "\
  131. Call FUNCTION on each key and value in HASHTABLE."])
  132. (fset 'ange-ftp-make-hash-key '(macro . #[(key) "└┴\nD\n├\nDFç" [if stringp key prin1-to-string] 5 "\
  133. Convert KEY into a suitable key for a hashtable."]))
  134. (fset 'ange-ftp-get-hash-entry #[(key tbl) "└    ;½â    ¬â┬    ! \"ë¡â ┼N)ç" [intern-soft key prin1-to-string tbl sym val] 4 "\
  135. Return the value associated with KEY in HASHTABLE."])
  136. (fset 'ange-ftp-put-hash-entry #[(key val tbl) "└    ;½â    ¬â┬    ! \"┼ ╞#ê┼ ┴    #)ç" [intern key prin1-to-string tbl sym put val] 4 "\
  137. Record an association between KEY and VALUE in HASHTABLE."])
  138. (fset 'ange-ftp-del-hash-entry #[(key tbl) "G┬    !    S┼╞\"ê ╟Y½ì HIê Së¬o+ç" [tbl len ange-ftp-make-hashtable new-tbl i ange-ftp-map-hashtable #[(k v) "    Ü«à┬ #ç" [k key ange-ftp-put-hash-entry v new-tbl] 4] 0] 5 "\
  139. Copy all symbols except KEY in HASHTABLE and return modified hashtable."])
  140. (fset 'ange-ftp-hash-entry-exists-p #[(key tbl) "└    ;½â    ¬â┬    ! \"ç" [intern-soft key prin1-to-string tbl] 3 "\
  141. Return whether there is an association for KEY in TABLE."])
  142. (fset 'ange-ftp-hash-table-keys #[(tbl) "└┴┬ \"─\"ç" [sort all-completions "" tbl string-lessp] 4 "\
  143. Return a sorted list of all the active keys in the hashtable, as strings."])
  144. (byte-code "└┬ç" ["$Revision: 1.4 $" ange-ftp-version nil] 1)
  145. (defvar ange-ftp-data-buffer-name " *ftp data*" "\
  146. Buffer name to hold directory listing data received from ftp process.")
  147. (defvar ange-ftp-netrc-modtime nil "\
  148. Last modified time of the netrc file from file-attributes.")
  149. (defvar ange-ftp-user-hashtable (ange-ftp-make-hashtable) "\
  150. Hash table holding associations between HOST, USER pairs.")
  151. (defvar ange-ftp-passwd-hashtable (ange-ftp-make-hashtable) "\
  152. Mapping between a HOST, USER pair and a PASSWORD for them.")
  153. (defvar ange-ftp-account-hashtable (ange-ftp-make-hashtable) "\
  154. Mapping between a HOST, USER pair and a ACCOUNT password for them.")
  155. (defvar ange-ftp-files-hashtable (ange-ftp-make-hashtable 97) "\
  156. Hash table for storing directories and their respective files.")
  157. (defvar ange-ftp-ls-cache-lsargs nil "\
  158. Last set of args used by ange-ftp-ls.")
  159. (defvar ange-ftp-ls-cache-file nil "\
  160. Last file passed to ange-ftp-ls.")
  161. (defvar ange-ftp-ls-cache-res nil "\
  162. Last result returned from ange-ftp-ls.")
  163. (put 'ftp-error 'error-conditions '(ftp-error file-error error))
  164. (fset 'ange-ftp-save-match-data '(macro . #[(&rest body) "└┴!┬┼ ╞DC╟╚    B╩ DEE*ç" [make-symbol "match-data" nil case-fold-search original let (match-data) unwind-protect progn body store-match-data] 6 "\
  165. Execute the BODY forms, restoring the global value of the match data.
  166. Before executing BODY, case-fold-search is locally bound to nil."]))
  167. (byte-code "└┴┬├#ê└┴─┼#ç" [put ange-ftp-save-match-data lisp-indent-hook 0 edebug-form-hook (&rest form)] 4)
  168. (fset 'ange-ftp-message #[(fmt &rest args) "└┴\n #─┼ !ëGY½î╚╔Z╩OP╦╠\"*ç" [apply format fmt args window-width minibuffer-window max msg "> " 3 nil message "%s"] 5 "\
  169. Output the given message, but truncate to the size of the minibuffer
  170. window."])
  171. (fset 'ange-ftp-abbreviate-filename #[(file &optional new) "└ ┬Ä ½ò─┼╞ !╟Q\"½ë╔òS╩O ½æ╠!╠ !ÿ½å═!«ü╬*ç" [match-data match-data ((store-match-data match-data)) default-directory string-match "^" regexp-quote "." file 0 nil new file-name-nondirectory file-name-directory "./"] 4 "\
  172. Abbreviate the given filename relative to the default-directory.  If the
  173. optional parameter NEW is given and the non-directory parts match, only return
  174. the directory part of the file."])
  175. (fset 'ange-ftp-set-user #[(host user) "└    \n #ç" [ange-ftp-put-hash-entry host user ange-ftp-user-hashtable] 4 "\
  176. For a given HOST, set or change the default USER." "sHost: \nsUser: "])
  177. (fset 'ange-ftp-get-user #[(host) "└ ê┴\n \"ë«í;½â¬ô½Ä╞╚╔╩\n\"╦ \")¬é╦ ë╠\n \"ê)ç" [ange-ftp-parse-netrc ange-ftp-get-hash-entry host ange-ftp-user-hashtable user ange-ftp-default-user t enable-recursive-minibuffers read-string format "User for %s: " user-login-name ange-ftp-set-user] 5 "\
  178. Given a HOST, return the default USER."])
  179. (fset 'ange-ftp-read-passwd #[(prompt &optional default) "½â¬ü┴┬ë├╚U¼═╔U¼╟╩U¼┴╦╠╬G╧\"#ê╨ ë╤U½à┴¬T╥U¼æ╙U¼ï╘!P¬=G┬V½6┬╒O¬-╓ ê┬╒O,ç" [default "" 0 t cursor-in-echo-area echo-keystrokes c pass 13 10 27 message "%s%s" prompt make-string 46 read-char 21 8 127 char-to-string -1 ange-ftp-repaint-minibuffer] 7 "\
  180. Read a password from the user. Echos a . for each character typed.
  181. End with RET, LFD, or ESC. DEL or C-h rubs out.  ^U kills line.
  182. Optional DEFAULT is password to start with."])
  183. (byte-code "└┴Mê┬├Mç" [ange-ftp-generate-passwd-key (macro . #[(host user) "└    ┬ Fç" [concat host "/" user] 4]) ange-ftp-lookup-passwd (macro . #[(host user) "└┴\n E─Eç" [ange-ftp-get-hash-entry ange-ftp-generate-passwd-key host user ange-ftp-passwd-hashtable] 4])] 2)
  184. (fset 'ange-ftp-set-passwd #[(host user passwd) "└    ┬ Q #ç" [ange-ftp-put-hash-entry host "/" user passwd ange-ftp-passwd-hashtable] 4 "\
  185. For a given HOST and USER, set or change the associated PASSWORD." (byte-code "└┴!└┬!├─!Eç" [read-string "Host: " "User: " ange-ftp-read-passwd "Password: "] 4)])
  186. (fset 'ange-ftp-get-host-with-passwd #[(user) "└ ê┴┬ìç" [ange-ftp-parse-netrc found-one (byte-code "└┴\n\"ê├ ┼Ä└╞\"ê*╚ç" [ange-ftp-map-hashtable #[(host val) "└    ┬ Q \"¡ä┼╞    \"ç" [ange-ftp-get-hash-entry host "/" user ange-ftp-passwd-hashtable throw found-one] 4] ange-ftp-user-hashtable match-data match-data ((store-match-data match-data)) #[(key value) "└┴\n\"¡Ö\n├─öO\n─ò╟Oÿ¡ê¡ä╔╩\")ç" [string-match "^[^/]*\\(/\\).*$" key 0 1 host user nil value throw found-one] 4] ange-ftp-passwd-hashtable nil] 3)] 2 "\
  187. Given a USER, return a host we know the password for."])
  188. (fset 'ange-ftp-get-passwd #[(host user) "└ ê┴\n├ Q\"«▐;½ì½ë ÿ½âç ╚ÿ¼à ╔ÿ½ô\n½Å\n;½â\nç╦ ╠═ Qç╬ !ë½ö╨╤╥ \n %┴├ Q\"\"¬ç╨╤╙ \n#!╒\n #ê*ç" [ange-ftp-parse-netrc ange-ftp-get-hash-entry host "/" user ange-ftp-passwd-hashtable ange-ftp-default-user ange-ftp-default-password "anonymous" "ftp" ange-ftp-generate-anonymous-password user-login-name "@" system-name ange-ftp-get-host-with-passwd other ange-ftp-read-passwd format "passwd for %s@%s (same as %s@%s): " "Password for %s@%s: " passwd ange-ftp-set-passwd] 8 "\
  189. Given a HOST and USER, return the FTP password, prompting if it was not
  190. previously set."])
  191. (fset 'ange-ftp-set-account #[(host user account) "└    ┬ Q #ç" [ange-ftp-put-hash-entry host "/" user account ange-ftp-account-hashtable] 4 "\
  192. For a given HOST and USER, set or change the associated ACCOUNT password." (byte-code "└┴!└┬!├─!Eç" [read-string "Host: " "User: " ange-ftp-read-passwd "Account password: "] 4)])
  193. (fset 'ange-ftp-get-account #[(host user) "└ ê┴\n├ Q\"«ì;¡ê ÿ¡éç" [ange-ftp-parse-netrc ange-ftp-get-hash-entry host "/" user ange-ftp-account-hashtable ange-ftp-default-user ange-ftp-default-account] 4 "\
  194. Given a HOST and USER, return the FTP account."])
  195. (fset 'ange-ftp-chase-symlinks #[(file) "└┬ !ë½É─    !½â    ¬à┼ !    P¬i) ç" [nil temp ange-ftp-real-file-symlink-p file file-name-absolute-p file-name-directory] 2 "\
  196. Return the filename that FILENAME references, following all symbolic links."])
  197. (fset 'ange-ftp-parse-netrc-token #[(token limit) "└    \n├#¡º─╞\nwêg╟=½Æ╚uê`╔\nwê╚uê`S{¬ë`╩\nwê`{)ç" [search-forward token limit t nil beg ",     \n" 34 1 "^\"" "^,     \n"] 4 "\
  198. Move along current line looking for the value of the TOKEN.  Valid
  199. separators between TOKEN and its value are commas and whitespace.
  200. Second arg LIMIT is a limit for the search."])
  201. (fset 'ange-ftp-parse-netrc-group #[nil "└yê`┴┬d├─$ê`┼ëëë    ë\nbê╦╠ \"    ╦═ \"╦╬ \"╦╧ \"    ½ú½ƒ╨    \"ê╤    #ê½└╥    #ê¬╡\nbê╙╘ ╒#½¬╦═ \"╦╬ \"╦╧ \"½ä½ä½ä b.ç" [0 re-search-forward "machine\\|default" end 2 nil account password login machine start ange-ftp-parse-netrc-token "machine" "login" "password" "account" ange-ftp-set-user ange-ftp-set-passwd ange-ftp-set-account search-forward "default" t ange-ftp-default-user ange-ftp-default-password ange-ftp-default-account] 7 "\
  202. Extract the values for the tokens  `machine', `login', `password'
  203. and `account' in the current buffer.  If successful, record the information
  204. found."])
  205. (fset 'ange-ftp-parse-netrc #[nil "└┴\n!!─ !ë¡Σ╞8Ü?¡█╚     ╩Ä ¼É╠8═ =½╣╬╧╨8\"½▒è╤╥!qê╙ !ê ╒ !╫╪!ê┘┌\"ê▄ebêm¼à▌ ê¬x▐p!ê)¬ë▀α\n\"êßΓ!ê╞8ë**ç" [ange-ftp-chase-symlinks ange-ftp-real-expand-file-name ange-ftp-netrc-filename file ange-ftp-real-file-attributes attr 5 ange-ftp-netrc-modtime match-data match-data ((store-match-data match-data)) ange-ftp-disable-netrc-security-check 2 user-uid string-match ".r..------" 8 generate-new-buffer "*ftp-.netrc*" ange-ftp-real-insert-file-contents buffer-file-name file-name-directory default-directory normal-mode t mapcar funcall find-file-hooks nil ange-ftp-parse-netrc-group kill-buffer ange-ftp-message "%s either not owned by you or badly protected." sit-for 1] 5 "\
  206. If ~/.netrc file exists and has the correct permissions then extract the
  207. `machine', `login', `password' and `account' information from within." nil])
  208. (fset 'ange-ftp-generate-root-prefixes #[nil "└ ê┴ ├Ä─╞╟\"ê╞╔\n\"ê«é─C+ç" [ange-ftp-parse-netrc match-data match-data ((store-match-data match-data)) nil res ange-ftp-map-hashtable #[(key value) "└┴\n\"¡¥\n├─öO\n─ò┼O╚╔RC\nBë\n*ç" [string-match "^[^/]*\\(/\\).*$" key 0 1 nil user host "@" ":" res] 4] ange-ftp-passwd-hashtable #[(host user) "┴PC\nBëç" [host ":" res] 2] ange-ftp-user-hashtable] 3 "\
  209. Return a list of prefixes of the form 'user@host:' to be used when
  210. completion is done in the root directory."])
  211. (fset 'ange-ftp-ftp-path-component '(macro . #[(n ns path) "└┴┬ EDC┼╟╚FEç" [let elt nth n ns substring path (match-beginning elt) (match-end elt)] 6 "\
  212. Extract the Nth ftp path component from NS."]))
  213. (byte-code "└┴!¼é┬└├!¼é──ç" [boundp ange-ftp-ftp-path-arg "" ange-ftp-ftp-path-res nil] 2)
  214. (fset 'ange-ftp-ftp-path #[(path) "    ÿ½é\nç├ ┼Ä╞@\"¡╔Aë@        ö    òO)\nA@        ö    òO) ╠8        ö    òO) G═U½å╬\n! \n E,*ëç" [path ange-ftp-ftp-path-arg ange-ftp-ftp-path-res match-data match-data ((store-match-data match-data)) string-match ange-ftp-path-format ns elt host user 2 0 ange-ftp-get-user] 4 "\
  215. Parse PATH according to ange-ftp-path-format (which see).
  216. Returns a list (HOST USER PATH), or nil if PATH does not match the format."])
  217. (fset 'ange-ftp-replace-path-component #[(fullpath path) "└ ┬Ä├ @\"¡Ü A╟8╔öO\nò╦OQ**ç" [match-data match-data ((store-match-data match-data)) string-match ange-ftp-path-format fullpath ns 2 elt 0 path nil] 5 "\
  218. Take a FULLPATH that matches according to ange-ftp-path-format and
  219. replace the path component with PATH."])
  220. (byte-code "└ ┬    ├─#ç" [make-sparse-keymap ange-ftp-tmp-keymap define-key "" exit-minibuffer] 4)
  221. (fset 'ange-ftp-repaint-minibuffer #[nil "└ ┴ =¡ª┬├!½ô─┼├ \"╞╔╩╦ ╦$*ç┼╞╔╩╦ ╦$*ç" [selected-window minibuffer-window fboundp allocate-event character-to-event 13 t enable-recursive-minibuffers unread-command-event read-from-minibuffer "" nil ange-ftp-tmp-keymap unread-command-char] 5 "\
  222. Gross hack to set minibuf_message = 0, so that the contents of the
  223. minibuffer will show."])
  224. (fset 'ange-ftp-ftp-process-buffer #[(host user) "└    ┬ ─░ç" ["*ftp " user "@" host "*"] 5 "\
  225. Return the name of the buffer that collects output from the ftp process
  226. connected to the given HOST and USER pair."])
  227. (fset 'ange-ftp-error #[(host user msg) "└ ┴─┼╞\"!!êdbê╔ !ê*╩╦╠═\"C\"ç" [selected-window t pop-up-windows cur pop-to-buffer get-buffer-create ange-ftp-ftp-process-buffer host user select-window signal ftp-error format "FTP Error: %s" msg] 5 "\
  228. Display the last chunk of output from the ftp process for the given HOST
  229. USER pair, and signal an error including MSG in the text."])
  230. (fset 'ange-ftp-set-buffer-mode #[nil ";¡É┴!¡ï┬ !ê─┼!ê╞ëç" [buffer-file-name ange-ftp-ftp-path auto-save-mode ange-ftp-auto-save make-variable-buffer-local revert-buffer-function ange-ftp-revert-buffer] 2 "\
  231. Set the correct modes for the current buffer if it is visiting a remote
  232. file."])
  233. (fset 'ange-ftp-kill-ftp-process #[(buffer) "¼ép┴ «ü\n롃─┼ !!ë¡ö@A@╔╩\"!*))ç" [buffer buffer-file-name default-directory file ange-ftp-ftp-path expand-file-name parsed user host kill-buffer ange-ftp-ftp-process-buffer] 5 "\
  234. If the BUFFER's visited filename or default-directory is an ftp filename
  235. then kill the related ftp process." "bKill FTP process associated with buffer: "])
  236. (fset 'ange-ftp-quote-string #[(string) "└┴┬├ \"\"ç" [apply concat mapcar #[(char) "┴X¼Å┬V¼è├U¼à─U½à┼─\"ç┼!ç" [char 32 126 34 92 vector] 3] string] 5 "\
  237. Quote any characters in STRING that may confuse the ftp process."])
  238. (fset 'ange-ftp-barf-if-not-directory #[(directory) "└    !«Å┬├─┼    !½â╞¬ü╟    E\"ç" [file-directory-p directory signal file-error "Opening directory" file-exists-p "not a directory" "no such file or directory"] 5])
  239. (fset 'ange-ftp-process-handle-line #[(line proc) "└    \n\"½Å├─\n┼ö┼òO!╞\"ëç└\n\"½é╔ç└\n\n\"½ï╦ ╔\nëç└\n\"½ì╨!ê╦ \nëç└\n\"½à╔ëç½é╔ç╦ \nëç" [string-match ange-ftp-xfer-size-msgs line ash string-to-int 1 -10 ange-ftp-xfer-size ange-ftp-skip-msgs t ange-ftp-good-msgs nil ange-ftp-process-busy ange-ftp-process-result ange-ftp-process-result-line ange-ftp-fatal-msgs delete-process proc ange-ftp-multi-msgs ange-ftp-process-multi-skip] 5 "\
  240. Look at the given LINE from the ftp process PROC.  Try to catagorize it
  241. into one of four categories: good, skip, fatal, or unknown."])
  242. (fset 'ange-ftp-process-log-string #[(proc str) "p┴Ä┬─!qê`╞!Uè╞!bêcê╞!`┬ôê) ¡ä╞!b+ç" [old-buffer ((set-buffer old-buffer)) nil moving process-buffer proc process-mark str] 3 "\
  243. For a given PROCESS, log the given STRING at the end of its
  244. associated buffer."])
  245. (fset 'ange-ftp-set-xfer-size #[(host user bytes) "└    \n\"ë¡ò─ !ë¡ìèqê╞╚\"ë    )))ç" [ange-ftp-get-process host user proc process-buffer buf ash bytes -10 ange-ftp-xfer-size] 4 "\
  246. Set the size of the next FTP transfer in bytes."])
  247. (fset 'ange-ftp-process-handle-hash #[(str) "┴ëöO┴ò┬OP┴ò┴öZ \\ ½╟½─╞ ╟ =¼╜╚╔!¼╕\n¼┤╦ _═\"┴U½ë╨╤ #ꬢ╥_Ñë=¼ï╨╒ #ê))ç" [str 0 nil ange-ftp-hash-mark-count ange-ftp-process-msg ange-ftp-process-verbose selected-window minibuffer-window boundp search-message cursor-in-echo-area ash ange-ftp-hash-mark-unit -6 kbytes ange-ftp-xfer-size ange-ftp-message "%s...%dk" 100 percent ange-ftp-last-percent "%s...%d%%"] 5 "\
  248. Remove hash marks from STRING and display count so far."])
  249. (fset 'ange-ftp-call-cont #[(cont result line) "¡ù<½Å@┴=¼ë┬@ A$ç \"ç" [cont lambda apply result line] 5 "\
  250. Call the function specified by CONT.  CONT can be either a function or a
  251. list of a function and some args.  The first two parameters passed to the
  252. function will be RESULT and LINE.  The remaining args will be taken from CONT
  253. if a list was passed."])
  254. (fset 'ange-ftp-process-filter #[(proc str) "└    !p─ !à╡┼Ä╞ ╚Ä└    !qê    ½æ\n½ì╦╠\"½å╬!╧    \"ê\n½ôP╦╤\"½à╥    ╙\"ê\n½▒╦╙\"½¬╘ëöO╘ò╓O╦╫\"½è╘ò╓O¬o╪    \"ê)¬K\n?¡»╘½ö½É½î▌▐\"ê▀ ê╓ ¡É !╓ Γ!##)+*ç" [process-buffer proc old-buffer buffer buffer-name ((set-buffer old-buffer)) match-data match-data ((store-match-data match-data)) ange-ftp-hash-mark-unit ange-ftp-process-busy string-match "^#+$" str ange-ftp-process-handle-hash ange-ftp-process-log-string ange-ftp-process-string "Password: *$" send-string "\n" 0 line nil "^ftp> *" ange-ftp-process-handle-line ange-ftp-xfer-size ange-ftp-process-msg ange-ftp-process-verbose ange-ftp-process-result ange-ftp-message "%s...done" ange-ftp-repaint-minibuffer ange-ftp-process-continue cont ange-ftp-call-cont ange-ftp-process-result-line] 4 "\
  255. Build up a complete line of output from the ftp PROCESS and pass it
  256. on to ange-ftp-process-handle-line to deal with."])
  257. (fset 'ange-ftp-process-sentinel #[(proc str) "└ ┬Ä├ !╞╟\"½ÿ╚ö╚òO╔ö╔òO\n ╠\n \"ê*)═ë*ç" [match-data match-data ((store-match-data match-data)) process-name proc name string-match "\\*ftp \\([^@]+\\)@\\([^*]+\\)*" 1 2 host user ange-ftp-wipe-file-entries nil ange-ftp-ls-cache-file] 4 "\
  258. When ftp process changes state, nuke all file-entries in cache."])
  259. (fset 'ange-ftp-use-gateway-p #[(host) "?¡î┴ ├Ä─\"*?ç" [ange-ftp-smart-gateway match-data match-data ((store-match-data match-data)) string-match ange-ftp-local-host-regexp host] 3 "\
  260. Returns whether to access this host via a normal (non-smart) gateway."])
  261. (fset 'ange-ftp-use-smart-gateway-p #[(host) "¡î┴ ├Ä─\"*?ç" [ange-ftp-smart-gateway match-data match-data ((store-match-data match-data)) string-match ange-ftp-local-host-regexp host] 3 "\
  262. Returns whether to access this host via a smart gateway."])
  263. (byte-code "└┴!¼é┬└├!¼ä─┼!└╞!¼â┬┬ç" [boundp ange-ftp-tmp-name-files nil ange-ftp-tmp-name-hashtable ange-ftp-make-hashtable 10 ange-ftp-pid] 2)
  264. (fset 'ange-ftp-get-pid #[nil "└┴!┬├Oëç" [make-temp-name "" 1 nil ange-ftp-pid] 3 "\
  265. Half-hearted attempt to get the current process's id."])
  266. (fset 'ange-ftp-make-tmp-name #[(host) "└    !½â\n¬ü «é╞ ╚    ╩ ╩ ═╬     $ ╧ \"ë >¼å╥ !½ô    Të    ╙V½X ╘P╚    ¬O B -ç" [ange-ftp-use-gateway-p host ange-ftp-gateway-tmp-name-template ange-ftp-tmp-name-template template ange-ftp-pid ange-ftp-get-pid pid 97 start nil file entry format "%s%c%s" intern ange-ftp-tmp-name-hashtable ange-ftp-tmp-name-files ange-ftp-real-file-exists-p 122 "X"] 6 "\
  267. This routine will return the name of a new file."])
  268. (byte-code "└┴Mê┬├!¼é─┬┼!¼é╞╟╚Mê╔╩Mç" [ange-ftp-del-tmp-name #[(temp) "└┴\n \" \"┼╞╟Åç" [delq intern temp ange-ftp-tmp-name-hashtable ange-ftp-tmp-name-files nil (ange-ftp-real-delete-file temp) ((error))] 4] boundp ange-ftp-gwp-running t ange-ftp-gwp-status nil ange-ftp-gwp-sentinel #[(proc str) "└ëç" [nil ange-ftp-gwp-running] 2] ange-ftp-gwp-filter #[(proc str) "└ ┬Ä├ \"ê╞╟\"½Å╚ ╔\n╦ !)═P\"¬┤╞╬\"½Å╚ ╧ ╦ !\"═P\"¬ƒ╞\"½è╤ !ê╥ë¬Ä╞\"¡ç╥╔ë*ç" [match-data match-data ((store-match-data match-data)) ange-ftp-process-log-string proc str string-match "login: *$" send-string t ange-ftp-default-user ange-ftp-get-user ange-ftp-gateway-host "\n" "Password: *$" ange-ftp-get-passwd ange-ftp-gateway-fatal-msgs delete-process nil ange-ftp-gwp-running ange-ftp-gateway-prompt-pattern ange-ftp-gwp-status] 6]] 2)
  269. (fset 'ange-ftp-gwp-start #[(host user name args) "└    !├ ë    $╟╚    ╩# ╠!ê═╬\"ê╧╨\"ê╤!`╥ôê╙╥╓╫    \"ê½ç╪!ê¬u¼ê┘▄#ê╓▌    \"ê╙╥▐\"ê½ç╪!ê¬u¼ê┘α#ê╙╥▐ß ΓQ\"ê+ç" [ange-ftp-get-user ange-ftp-gateway-host gw-user start-process name ange-ftp-gateway-program proc mapconcat identity args " " ftp process-kill-without-query set-process-sentinel ange-ftp-gwp-sentinel set-process-filter ange-ftp-gwp-filter process-mark nil t ange-ftp-gwp-running ange-ftp-gwp-status ange-ftp-message "Connecting to gateway %s..." accept-process-output ange-ftp-error host user "unable to login to gateway" "Connecting to gateway %s...done" process-send-string ange-ftp-gateway-setup-term-command "unable to set terminal modes on gateway" "exec " "\n"] 5 "\
  270. Login to the gateway machine and fire up an ftp process."])
  271. (fset 'ange-ftp-raw-send-cmd #[(proc cmd &optional msg cont nowait) "└    !┬>àÖè├    !qê ½à┼ ê¬x╞╞╔╩ ╩ ╤╙╓P½è½å╪┘\"êdbê`╩ôê█ ▌Ä▐▀\"½î╤ëòOα▒ê¬äcê*!`╩ôêΓ    \"êπ    !`╩ôê$?¡ô ½å┼    !ê¬w?¡à B)ç" [process-status proc (run open) process-buffer ange-ftp-process-busy accept-process-output "" ange-ftp-process-string ange-ftp-process-result-line t nil ange-ftp-process-result ange-ftp-process-multi-skip msg ange-ftp-process-msg cont ange-ftp-process-continue 0 ange-ftp-hash-mark-count -1 ange-ftp-last-percent cmd "\n" ange-ftp-process-verbose ange-ftp-message "%s..." last-input-start match-data match-data ((store-match-data match-data)) string-match "^user \"[^\"]*\"" " Turtle Power!\n" last-input-end send-string process-mark nowait] 3 "\
  272. Low-level routine to send the given ftp CMD to the ftp PROCESS.
  273. MSG is an optional message to output before and after the command.
  274. If CONT is non-NIL then it is either a function or a list of function and
  275. some arguments.  The function will be called when the ftp command has completed.
  276. If CONT is NIL then this routine will return ( RESULT . LINE ) where RESULT
  277. is whether the command was successful, and LINE is the line from the FTP
  278. process that caused the command to complete.
  279. If NOWAIT is given then the routine will return immediately the command has
  280. been queued with no result.  CONT will still be called, however."])
  281. (fset 'ange-ftp-nslookup-host #[(host) "½╕┴┬ë $ ╞!êè╟!qê╚!╔>½å╩!ê¬sebê╦╠═╬#½å╧ö╧ò{╨p!ê) *ç ç" [ange-ftp-nslookup-program start-process " *nslookup*" host res proc process-kill-without-query process-buffer process-status (run open) accept-process-output re-search-forward "Name:.*\nAddress: *\\(.*\\)$" nil t 1 kill-buffer] 5 "\
  282. Attempt to resolve the given HOSTNAME using nslookup if possible." "sHost:  "])
  283. (fset 'ange-ftp-start-process #[(host user name) "└    !ë½â ¬ü ╞C\"╔\n\n½ñ ½ì╠    $\n¬¥╧╨ë╞D\"$\n¬è╧╨ë$\n╙\n!êè╘\n!qê╒ ê)╓\n╫\"ê╪\n┘\"ê┌\n!ê\n,ç" [ange-ftp-use-gateway-p host use-gateway ange-ftp-gateway-ftp-program-name ange-ftp-ftp-program-name ftp-prog append ange-ftp-ftp-program-args args nil proc ange-ftp-gateway-program-interactive ange-ftp-gwp-start user name apply start-process ange-ftp-gateway-program ange-ftp-gateway-host process-kill-without-query process-buffer ange-ftp-shell-mode set-process-sentinel ange-ftp-process-sentinel set-process-filter ange-ftp-process-filter accept-process-output] 8 "\
  284. Spawn a new ftp process ready to connect to machine HOST and give it NAME.
  285. If HOST is only ftp-able through a gateway machine then spawn a shell
  286. on the gateway machine to do the ftp instead."])
  287. (fset 'ange-ftp-smart-login #[(host user pass account proc) "└    ┬├─!#┬╟##ë    @¼î╩ ╠    AP#ê└    ┬═ ─!%┬╨ ##ë    @«¢╤ ╥#ê╙ ╥#ê╩ ╘    AP#)ç" [ange-ftp-raw-send-cmd proc format "open %s %s" ange-ftp-nslookup-host ange-ftp-gateway-host ange-ftp-smart-gateway-port "Opening FTP connection to %s via %s" host result ange-ftp-error user "OPEN request failed: " "user \"%s\"@%s %s %s" pass account "Logging in as user %s@%s" ange-ftp-set-passwd nil ange-ftp-set-account "USER request failed: "] 9 "\
  288. Connect to the FTP-server on HOST as USER using PASSWORD and ACCOUNT.
  289. PROC is the FTP-client's process.  This routine uses the smart-gateway
  290. host specified in ``ange-ftp-gateway-host''."])
  291. (fset 'ange-ftp-normal-login #[(host user pass account proc) "└    ┬├─!\"┬╞\"#ë@¼ï╚    ╩AP#ê└    ┬╦     $┬╬    ##ë@«ÿ╧    ╨#ê╤    ╨#ê╚    ╥AP#)ç" [ange-ftp-raw-send-cmd proc format "open %s" ange-ftp-nslookup-host host "Opening FTP connection to %s" result ange-ftp-error user "OPEN request failed: " "user \"%s\" %s %s" pass account "Logging in as user %s@%s" ange-ftp-set-passwd nil ange-ftp-set-account "USER request failed: "] 8 "\
  292. Connect to the FTP-server on HOST as USER using PASSWORD and ACCOUNT.
  293. PROC is the process to the FTP-client."])
  294. (defvar ange-ftp-hash-mark-msgs "[hH]ash mark [^0-9]*\\([0-9]+\\)" "\
  295. *Regexp matching the FTP client's output upon doing a HASH command.")
  296. (fset 'ange-ftp-guess-hash-mark-size #[(proc) "¡┬è┴\n!qê├\n─\"ë@A╚     ╩Ä╦ \"¡ƒ═╬ö╬òO!ë╤╥\"«àë).ç" [ange-ftp-send-hash process-buffer proc ange-ftp-raw-send-cmd "hash" status result line match-data match-data ((store-match-data match-data)) string-match ange-ftp-hash-mark-msgs string-to-int 1 size ange-ftp-ascii-hash-mark-size ash -4 ange-ftp-hash-mark-unit ange-ftp-binary-hash-mark-size] 5])
  297. (fset 'ange-ftp-get-process #[(host user) "└    \n\"─ !ë½è╞!╟>½â¬└╚╔    \n\"!╚╩    \n\"!  ═    \n #╬    !½î╧    \n  %ê¬è╨    \n  %ê╤!ê╥    \n\"ê╙╘!ê**ç" [ange-ftp-ftp-process-buffer host user name get-process proc process-status (run open) ange-ftp-quote-string ange-ftp-get-passwd ange-ftp-get-account account pass ange-ftp-start-process ange-ftp-use-smart-gateway-p ange-ftp-smart-login ange-ftp-normal-login ange-ftp-guess-hash-mark-size ange-ftp-guess-host-type run-hooks ange-ftp-process-startup-hook] 7 "\
  298. Return the process object for a FTP process connected to HOST and
  299. logged in as USER.  Create a new process if needed."])
  300. (byte-code "└┴!¼é┬└├!¼é┬┬ç" [boundp ange-ftp-host-cache nil ange-ftp-host-type-cache] 2)
  301. (fset 'ange-ftp-host-type #[(host &optional user) "    =½é\nç ½ì─ \"½ç    =½é\nç┼!½â╞¬╡╟╚!½ê╚!½â╔¬¿╟╩!½ê╩!½â╦¬¢╟╠!½ê╠!½â═¬Ä╟╬!½ê╬!½â╧¬ü╨ëç" [host ange-ftp-host-cache ange-ftp-host-type-cache user ange-ftp-get-process ange-ftp-dumb-unix-host dumb-unix fboundp ange-ftp-vos-host vos ange-ftp-vms-host vms ange-ftp-mts-host mts ange-ftp-cms-host cms unix] 3 "\
  302. Return a symbol which represents the type of the HOST given.
  303. If the optional argument USER is given, attempts to guess the
  304. host-type by logging in as USER."])
  305. (defvar ange-ftp-fix-path-func-alist nil "\
  306. Association list of ( TYPE . FUNC ) pairs, where FUNC is a routine
  307. which can change a UNIX path into a path more suitable for a host of type
  308. TYPE.")
  309. (defvar ange-ftp-fix-dir-path-func-alist nil "\
  310. Association list of ( TYPE . FUNC ) pairs, where FUNC is a routine
  311. which can change UNIX directory path into a directory path more suitable
  312. for a host of type TYPE.")
  313. (defvar ange-ftp-dumb-host-types '(dumb-unix) "\
  314. List of host types that can't take UNIX ls-style listing options.")
  315. (fset 'ange-ftp-send-cmd #[(host user cmd &optional msg cont nowait) "@A@┴ëëëâû╚8╔\n \"╠=½╝ ₧A«ü╬!╧8 ╨=½ô╤╥\"½î╤╙ \"¼å╘P >¼└╓╫╪ #¬│ ₧A«ü╬┌>½ê\n!¬£█>½å\n!¬É▄=½è\n!\n!▌!ë¡ä▐P¡â▐PQ┴ë ßΓ\n \"#Σ\n #%&»&%ê&?¡è%?¡à B.ç" [cmd nil fix-pathname-func host-type cmd3 cmd2 cmd1 cmd0 2 ange-ftp-host-type host user dir ange-ftp-fix-dir-path-func-alist identity 3 unix string-match "/$" "R" "." ange-ftp-dumb-host-types ls format "\"%s %s\"" ange-ftp-fix-path-func-alist (get delete mkdir rmdir cd) (append put chmod) rename symbol-name " " afsc-line afsc-result ange-ftp-raw-send-cmd ange-ftp-get-process msg #[(result line host user cmd msg cont nowait) "¼ä         ½å┼     #ç╞╟    \"\n ╠D%ç" [cont result afsc-result line afsc-line ange-ftp-call-cont ange-ftp-raw-send-cmd ange-ftp-get-process host user cmd msg #[(result line cont) "¼ä     ┼     #ç" [cont result afsc-result line afsc-line ange-ftp-call-cont] 4] nowait] 6] cont nowait] 12 "\
  316. Find an ftp process connected to HOST logged in as USER and send it CMD.
  317. MSG is an optional status message to be output before and after issuing the
  318. command.
  319. See the documentation for ange-ftp-raw-send-cmd for a description of CONT
  320. and NOWAIT."])
  321. (byte-code "└┴P├┼╟ç" ["^[-A-Z0-9$*][-A-Z0-9$*]?[-A-Z0-9$*]?[-A-Z0-9$*]?[-A-Z0-9$*]?" "[-A-Z0-9$*]?[-A-Z0-9$*]?[-A-Z0-9$*]?\\.[0-9][0-9][0-9A-Z]$" ange-ftp-cms-path-template "^[-A-Z0-9_$]+:\\[[-A-Z0-9_$]+\\(\\.[-A-Z0-9_$]+\\)*\\]$" ange-ftp-vms-path-template "^[A-Z0-9._][A-Z0-9._][A-Z0-9._][A-Z0-9._]:$" ange-ftp-mts-path-template nil] 2)
  322. (fset 'ange-ftp-guess-host-type #[(host user) "└    !    ┬ ─Rë╟=âó╚     ╩Ä╦     \"ë @╬¼£╨╤!ê╥╙!ê╘╒ A\"½╬╓    !ê    ╪¬┬╘\"½î█    !ê    ▄¬«╘\"½î▐    !ê    ▀¬Ü╘ \"½î╓    !ê    ╪¬å    ╟!₧Aë½êΓ\"π$#ê-╪=¡Ñσ$\"?¡¥╦     \"@ë½ïπ┬P$#¬ç╨╤!ê╥╙!)*ç" [ange-ftp-host-type host "/" user "/~" key host-type unix match-data match-data ((store-match-data match-data)) ange-ftp-get-pwd result dir nil fix-path-func message "Warning! Unable to get home directory" sit-for 1 string-match "^450 No current working directory defined$" ange-ftp-add-cms-host ange-ftp-host-cache cms ange-ftp-host-type-cache ange-ftp-vms-path-template ange-ftp-add-vms-host vms ange-ftp-mts-path-template ange-ftp-add-mts-host mts ange-ftp-cms-path-template ange-ftp-fix-path-func-alist reverse ange-ftp-put-hash-entry ange-ftp-expand-dir-hashtable ange-ftp-hash-entry-exists-p] 6 "\
  323. Guess at the the host type of HOST by doing a pwd, and examining
  324. the directory syntax."])
  325. (byte-code "└┴!¼é┬┬ç" [boundp ange-ftp-shell-mode-map nil] 2)
  326. (fset 'ange-ftp-shell-mode #[nil "└p!┬ ê ¼Å─┼!ê╞!╚ ╔╩#ê╦ !ê╠╬╨╥╙!ê╘ ╥╒!ê╘ dbê╓    !`╫ôê╥╪!ê┘╥┌!ê╥█!ê╥▄!ê╥▌!ê╥▐!ê╥▀!ê╥α!ê╥ß!ê╥Γ!ê╥π!ê╥Σ!ê╥σ!êµ µ$┘τΦ!)ç" [get-buffer-process proc kill-all-local-variables ange-ftp-shell-mode-map require shell copy-keymap shell-mode-map define-key "" ange-ftp-shell-send-input use-local-map ange-ftp-shell-mode major-mode "ange-ftp" mode-name (": %s") mode-line-process make-local-variable last-input-start make-marker last-input-end process-mark nil ange-ftp-process-string "" ange-ftp-process-busy ange-ftp-process-result ange-ftp-process-msg ange-ftp-process-multi-skip ange-ftp-process-result-line ange-ftp-process-continue ange-ftp-hash-mark-count ange-ftp-binary-hash-mark-size ange-ftp-ascii-hash-mark-size ange-ftp-hash-mark-unit ange-ftp-xfer-size ange-ftp-last-percent 0 run-hooks ange-ftp-shell-mode-hook] 4 "\
  327. Major mode for interacting with an FTP process.
  328. Return at end of buffer sends line as input.
  329. Return not at end copies rest of line to end and sends it.
  330.  
  331. The following commands imitate the usual Unix interrupt and editing
  332. control characters:
  333. \\{ange-ftp-shell-mode-map}
  334. Runs ange-ftp-shell-mode-hook if not nil." nil])
  335. (fset 'ange-ftp-shell-send-input #[nil "└p!ë¼ä┬├!ê─êm½Æ╞    !─ôê╟cê`─ôê¬⌐╔yê╩╦è─ê`)╠#ê`═yê`{dbê`─ôêcê`─ôê)╧    #ê╞    !`─ô)ç" [get-buffer-process process error "Current buffer has no process" nil last-input-start process-mark 10 last-input-end 0 re-search-forward "ftp> *" t 1 copy process-send-region] 5 "\
  336. Send input to FTP process.
  337. At end of buffer, sends all text after last output as input to the subshell,
  338. including a newline inserted at the end.  When not at end, copies current line
  339. to the end of the buffer and sends it, after first attempting to discard any
  340. prompt at the beginning of the line." nil])
  341. (fset 'ange-ftp-dumb-unix-host #[(host) "¡è┴ ├Ä─\"*ç" [ange-ftp-dumb-unix-host-regexp match-data match-data ((store-match-data match-data)) string-match host] 3 "\
  342. Returns whether HOST's FTP server doesn't like 'ls' or 'dir' commands
  343. to take switch arguments."])
  344. (fset 'ange-ftp-add-dumb-unix-host #[(host) "└    !?¡æ┬├    !─¡ü╞░╟ëç" [ange-ftp-dumb-unix-host host "^" regexp-quote "$" ange-ftp-dumb-unix-host-regexp "\\|" nil ange-ftp-host-cache] 5 "\
  345. Interactively adds a given HOST to ange-ftp-dumb-unix-host-regexp." (byte-code "└┴┬ «å ─=¡üë¡à╟!@)\"Cç" [read-string "Host: " buffer-file-name major-mode dired-mode dired-directory name ange-ftp-ftp-path] 5)])
  346. (defvar ange-ftp-parse-list-func-alist nil "\
  347. Association list of ( TYPE . FUNC ) pairs.  The FUNC is a routine
  348. which can parse the output from a DIR listing for a host of type TYPE.")
  349. (fset 'ange-ftp-ls #[(file lsargs parse &optional no-error) "└    !┬    !ëâ÷ @ A@╞╟ 8!╔    !\n╦ \"ë >╧╧╧╧╘ÿ½ë╒╓ ╫#!½ù\nÿ½É¼çÿ½àé≥▄ !▌F▐Ä▀ αßΓ    !\"$ë@½▀èπ$!qêσ êµ!½çτ!ꬣΦ)!êµ!½çτ!ê¬èΩ αδ\"#ê,½ÿφ     .₧Aë½à ¬ä∩!\"ê\n≡ ë)¬Ä1?¡ëΩ ≥AP#).\n¬â≤⌠!)ç" [ange-ftp-expand-file-name file ange-ftp-ftp-path parsed host user ange-ftp-quote-string 2 path directory-file-name key ange-ftp-host-type host-type ange-ftp-dumb-host-types dumb nil result temp lscmd parse-func "" ange-ftp-real-file-name-as-directory ange-ftp-expand-dir "~" ange-ftp-ls-cache-file lsargs ange-ftp-ls-cache-lsargs ange-ftp-ls-cache-res ange-ftp-make-tmp-name dir ((ange-ftp-del-tmp-name temp)) ange-ftp-send-cmd format "Listing %s" ange-ftp-abbreviate-filename get-buffer-create ange-ftp-data-buffer-name erase-buffer ange-ftp-real-file-readable-p ange-ftp-real-insert-file-contents sleep-for ange-ftp-retry-time ange-ftp-error "list data file %s not readable" parse ange-ftp-set-files ange-ftp-parse-list-func-alist ange-ftp-parse-dired-listing buffer-string no-error "DIR failed: " error "Should never happen. Please report. Bug ref. no.: 1"] 9 "\
  350. Return the output of an `DIR' or `ls' command done over ftp.
  351. FILE is the full name of the remote file, LSARGS is any args to pass to the
  352. `ls' command, and PARSE specifies that the output should be parsed and stored
  353. away in the internal cache."])
  354. (byte-code "└┴P├ç" [" \\(Jan\\|Feb\\|Mar\\|Apr\\|May\\|Jun\\|Jul\\|Aug\\|Sep\\|Oct" "\\|Nov\\|Dec\\) +[0-3]?[0-9] " ange-ftp-date-regexp nil] 2)
  355. (defvar ange-ftp-add-file-entry-alist nil "\
  356. Association list of pairs ( TYPE . FUNC ), where FUNC
  357. is a function to be used to add a file entry for the OS TYPE. The
  358. main reason for this alist is to deal with file versions in VMS.")
  359. (defvar ange-ftp-delete-file-entry-alist nil "\
  360. Association list of pairs ( TYPE . FUNC ), where FUNC
  361. is a function to be used to delete a file entry for the OS TYPE.
  362. The main reason for this alist is to deal with file versions in
  363. VMS.")
  364. (fset 'ange-ftp-add-file-entry #[(path &optional dir-p) "└┴\n!@! ₧A«ü─\n\"ê╞ëç" [ange-ftp-host-type ange-ftp-ftp-path path ange-ftp-add-file-entry-alist ange-ftp-internal-add-file-entry dir-p nil ange-ftp-ls-cache-file] 3 "\
  365. Given a PATH, add the file entry for it, if its directory
  366. info exists."])
  367. (fset 'ange-ftp-delete-file-entry #[(path &optional dir-p) "└┴\n!@! ₧A«ü─\n\"ê╞ëç" [ange-ftp-host-type ange-ftp-ftp-path path ange-ftp-delete-file-entry-alist ange-ftp-internal-delete-file-entry dir-p nil ange-ftp-ls-cache-file] 3 "\
  368. Given a PATH, delete the file entry for it, if its directory
  369. info exists."])
  370. (byte-code "└┴Mê┬├Mç" [ange-ftp-parse-filename (macro . #[nil "└ç" [(let ((eol (progn (end-of-line) (point)))) (beginning-of-line) (if (re-search-forward ange-ftp-date-regexp eol t) (progn (skip-chars-forward " ") (skip-chars-forward "^ " eol) (skip-chars-forward " " eol) (buffer-substring (point) eol))))] 1]) ange-ftp-ls-parser (macro . #[nil "└ç" [(let ((tbl (ange-ftp-make-hashtable)) (used-F (and (stringp switches) (string-match "F" switches))) file-type symlink directory file) (while (setq file (ange-ftp-parse-filename)) (beginning-of-line) (skip-chars-forward "     0-9") (setq file-type (following-char) directory (eq file-type 100)) (if (eq file-type 108) (if (string-match " -> " file) (setq symlink (substring file (match-end 0)) file (substring file 0 (match-beginning 0))) (setq symlink "")) (setq symlink nil)) (if (and used-F (not (string-equal file "")) (looking-at ".[-r][-w]\\([^ ]\\)[-r][-w]\\([^ ]\\)[-r][-w]\\([^ ]\\)")) (let ((socket (eq file-type 115)) (executable (and (not symlink) (string-match "[xst]" (concat (buffer-substring (match-beginning 1) (match-end 1)) (buffer-substring (match-beginning 2) (match-end 2)) (buffer-substring (match-beginning 3) (match-end 3))))))) (if (or (and symlink (string-match "@$" file)) (and directory (string-match "/$" file)) (and executable (string-match "*$" file)) (and socket (string-match "=$" file))) (setq file (substring file 0 -1))))) (ange-ftp-put-hash-entry file (or symlink directory) tbl) (forward-line 1)) (ange-ftp-put-hash-entry "." t tbl) (ange-ftp-put-hash-entry ".." t tbl) tbl)] 1])] 2)
  371. (defvar ange-ftp-dl-dir-regexp nil "\
  372. Regexp matching directories which are listed in dl format. This regexp
  373. shouldn't be anchored with a trailing $ so that it will match subdirectories
  374. as well.")
  375. (fset 'ange-ftp-add-dl-dir #[(dir) "¡ä┴\n\"?¡î├─\n!¡ü┼Rëç" [ange-ftp-dl-dir-regexp string-match dir "^" regexp-quote "\\|"] 4 "\
  376. Interactively adds a given directory to ange-ftp-dl-dir-regexp." (byte-code "└┴┬ «å ─=¡üë¡è╟!¡ä╚!)\"Cç" [read-string "Directory: " buffer-file-name major-mode dired-mode dired-directory name ange-ftp-ftp-path file-name-directory] 5)])
  377. (fset 'ange-ftp-dl-parser '(macro . #[nil "└ç" [(let ((tbl (ange-ftp-make-hashtable))) (while (not (eobp)) (ange-ftp-put-hash-entry (buffer-substring (point) (progn (skip-chars-forward "^ /\n") (point))) (eq (following-char) 47) tbl) (forward-line 1)) (ange-ftp-put-hash-entry "." t tbl) (ange-ftp-put-hash-entry ".." t tbl) tbl)] 1]))
  378. (fset 'ange-ftp-parse-dired-listing #[(&optional switches) "└ ┬Ä├─!â┼yê╞ ;¡à╚╔\"╩ëëë  ╩ê`╥yê╙╒#¡Æ╓╩wê╫wê╓wê`{)ë â╥yê╪╩wêgë┘= ┌=½₧╚█ \"½Æ ╥ò╩O ╥ëöO ¬ê▄¬â╩½▀ ▄ÿ¼┘├▌!½╘▐=?¡ô╚▀┼ö┼ò{αöαò{ßößò{Q\"\"#½ç╚Σ \"¼í ½ç╚σ \"¼û\"½ç╚µ \"¼ï#½Ä╚τ \"½ç ╥ΦO *Θ «é #ê┼yêé*ΘΩ╒#êΘδ╒#ê.éw├∞!½ä╩éwm½ä╩éw╙╩╒#â9╥yê╞ ;¡à╚╔\"╩ëëë  ╩ê`╥yê╙╒#¡Æ╓╩wê╫wê╓wê`{)ë â%╥yê╪╩wêgë┘= ┌=½₧╚█ \"½Æ ╥ò╩O ╥ëöO ¬ê▄¬â╩½▀ ▄ÿ¼┘├▌!½╘▐=?¡ô╚▀┼ö┼ò{αöαò{ßößò{Q\"\"#½ç╚Σ \"¼í ½ç╚σ \"¼û\"½ç╚µ \"¼ï#½Ä╚τ \"½ç ╥ΦO *Θ «é #ê┼yêéNΘΩ╒#êΘδ╒#ê.¬╛╙φ╩╒#½╢ε !ê╥yê╞ m¼öΘ`∩╩wê`{g≡=#ê┼yê¬iΘΩ╒#êΘδ╒#ê)¬ü╩*ç" [match-data match-data ((store-match-data match-data)) looking-at "^total [0-9]+$" 1 ange-ftp-make-hashtable switches string-match "F" nil file directory symlink file-type used-F tbl eol 0 re-search-forward ange-ftp-date-regexp t " " "^ " "     0-9" 100 108 " -> " "" ".[-r][-w]\\([^ ]\\)[-r][-w]\\([^ ]\\)[-r][-w]\\([^ ]\\)" 115 "[xst]" 2 3 executable socket "@$" "/$" "*$" "=$" -1 ange-ftp-put-hash-entry "." ".." "[^\n]+\\( not found\\|: Not a directory\\)\n\\'" "^[^ \n    ]+ +\\([0-9]+\\|-\\|=\\) " ange-ftp-add-dl-dir "^ /\n" 47] 8 "\
  379. Parse the current buffer which is assumed to be in a dired-like listing
  380. format, and return a hashtable as the result. If the listing is not really
  381. a listing, then return nil."])
  382. (fset 'ange-ftp-set-files #[(directory files) "¡ç┴┬ ! #ç" [files ange-ftp-put-hash-entry file-name-as-directory directory ange-ftp-files-hashtable] 4 "\
  383. For a given DIRECTORY, set or change the associated FILES hashtable."])
  384. (fset 'ange-ftp-get-files #[(directory &optional no-error) "└    !┬     \"«┘─ ╞Ä╟    ╚╔!½₧    ;½Ö╩╦    \"½Æ╩╠    \"½ï╩═    \"¼ä    ¬ñ╚╬!½₧;½Ö╩╦\"½Æ╩╠\"½ï╩═\"¼ä¬ü╧╨$¡ä┬     \"*ç" [file-name-as-directory directory ange-ftp-get-hash-entry ange-ftp-files-hashtable match-data match-data ((store-match-data match-data)) ange-ftp-ls boundp dired-actual-switches string-match "[aA]" "l" "R" dired-listing-switches "-al" t no-error] 5 "\
  385. Given a given DIRECTORY, return a hashtable of file entries.
  386. This will give an error or return nil, depending on the value of
  387. NO-ERROR, if a listing for DIRECTORY cannot be obtained."])
  388. (fset 'ange-ftp-get-file-part '(macro . #[(path) "└┴┬ DDC─Eç" [let file file-name-nondirectory path (if (string-equal file "") "." file)] 4 "\
  389. Given PATH, return the file part that can be used for looking up the
  390. file's entry in a hashtable."]))
  391. (fset 'ange-ftp-allow-child-lookup '(macro . #[(dir file) "└┴┬ D─D╞╟F╚EDç" [not let* efile file edir dir (parsed (ange-ftp-ftp-path edir)) (host-type (ange-ftp-host-type (car parsed))) (or (and (boundp 'dired-local-variables-file) (stringp dired-local-variables-file) (string-equal dired-local-variables-file efile)) (and (eq host-type 'vms) (string-match "\\." efile)) (and (memq host-type '(mts cms)) (not (string-equal "/" (nth 2 parsed)))))] 6 "\
  392. Return whether ange-ftp-file-entry-p and ange-ftp-get-file-entry are
  393. allowed to determine if PATH is a sub-directory by listing it directly,
  394. rather than listing its parent directory. This is used for efficiency so
  395. that a wasted listing is not done:
  396. 1. When looking for a .dired file in dired-x.el.
  397. 2. The syntax of FILE and DIR make it impossible that FILE could be a valid
  398.     subdirectory. This is of course an OS dependent judgement."]))
  399. (fset 'ange-ftp-file-entry-p #[(path) "└    !┬    !─ \"╟    !ë╔ÿ½â╩¬é)½ê╦\"¬┘ ╬!╨@!╥╙!½î;½ç ÿ«Ü╘=½ç╒╓ \"«ì╫>¡ç╪8┘ÿ?,¼É┌    █\"ë½ç─╩\"«ç╦┌ !\",ç" [directory-file-name path file-name-directory dir ange-ftp-get-hash-entry ange-ftp-files-hashtable ent file-name-nondirectory file "" "." ange-ftp-hash-entry-exists-p efile edir ange-ftp-ftp-path parsed ange-ftp-host-type host-type boundp dired-local-variables-file vms string-match "\\." (mts cms) 2 "/" ange-ftp-get-files t] 5 "\
  400. Given PATH, return whether there is a file entry for it."])
  401. (fset 'ange-ftp-get-file-entry #[(path) "└    !┬    !─ \"╟    !ë╔ÿ½â╩¬é)½ê─\"¬┘  ═ !╧@!╤╥!½î;½ç ÿ«Ü╙=½ç╘╒ \"«ì╓>¡ç╫8╪ÿ?,¼É┘    ┌\"ë½ç─╩\"«ç─┘ !\",ç" [directory-file-name path file-name-directory dir ange-ftp-get-hash-entry ange-ftp-files-hashtable ent file-name-nondirectory file "" "." efile edir ange-ftp-ftp-path parsed ange-ftp-host-type host-type boundp dired-local-variables-file vms string-match "\\." (mts cms) 2 "/" ange-ftp-get-files t] 5 "\
  402. Given PATH, return the given file entry which will be either t for a
  403. directory, nil for a normal file, or a string for a symlink. If the file
  404. isn't in the hashtable, this also returns nil."])
  405. (byte-code "└┴Mê┬├Mç" [ange-ftp-internal-delete-file-entry #[(path &optional dir-p) "½ì┴\n!├\n \"ê┼\n!╞╟\n! \"ë¡ö├╔\n!ë\n╦ÿ½â╠¬é\n)\")ç" [dir-p file-name-as-directory path ange-ftp-del-hash-entry ange-ftp-files-hashtable directory-file-name ange-ftp-get-hash-entry file-name-directory files file-name-nondirectory file "" "."] 4] ange-ftp-internal-add-file-entry #[(path &optional dir-p) "½ä┴\n!├─\n!\"ë¡ò╟╚\n!ë    ╩ÿ½â╦¬é    )#)ç" [dir-p directory-file-name path ange-ftp-get-hash-entry file-name-directory ange-ftp-files-hashtable files ange-ftp-put-hash-entry file-name-nondirectory file "" "."] 5]] 2)
  406. (fset 'ange-ftp-wipe-file-entries #[(host user) "└    G!├─    \"ê\në)ç" [ange-ftp-make-hashtable ange-ftp-files-hashtable new-tbl ange-ftp-map-hashtable #[(key val) "└    !ë¡Ü\n@\nA@ ܽå Ü«ç╟        #*)ç" [ange-ftp-ftp-path key parsed u h host user ange-ftp-put-hash-entry val new-tbl] 5]] 3 "\
  407. Replace the file entry information hashtable with one that doesn't have any
  408. entries for the given HOST, USER pair."])
  409. (fset 'ange-ftp-set-binary-mode #[(host user) "└    \n├#ë@¼è┼    \n╞ AP#¬Æè╟╚    \n\"!qê╔\n╦\"ë ))ç" [ange-ftp-send-cmd host user (type "binary") result ange-ftp-error "BINARY failed: " process-buffer ange-ftp-get-process ash ange-ftp-binary-hash-mark-size -4 ange-ftp-hash-mark-unit] 6 "\
  410. Tell the ftp process for the given HOST & USER to switch to binary mode."])
  411. (fset 'ange-ftp-set-ascii-mode #[(host user) "└    \n├#ë@¼è┼    \n╞ AP#¬Æè╟╚    \n\"!qê╔\n╦\"ë ))ç" [ange-ftp-send-cmd host user (type "ascii") result ange-ftp-error "ASCII failed: " process-buffer ange-ftp-get-process ash ange-ftp-ascii-hash-mark-size -4 ange-ftp-hash-mark-unit] 6 "\
  412. Tell the ftp process for the given HOST & USER to switch to ascii mode."])
  413. (fset 'ange-ftp-cd #[(host user dir) "└    \n├ D┼$ë@«ë╟    \n╚AP#)ç" [ange-ftp-send-cmd host user cd dir "Doing CD" result ange-ftp-error "CD failed: "] 6])
  414. (fset 'ange-ftp-get-pwd #[(host user) "└    \n├─$ëA╟@½₧╔ \n╦Ä╠═\"¼ç╠╬\"½ë╧ö╧òO*+Bç" [ange-ftp-send-cmd host user (pwd) "Getting PWD" result line nil dir match-data match-data ((store-match-data match-data)) string-match "\"\\([^\"]*\\)\"" " \\([^ ]+\\) " 1] 6 "\
  415. Attempts to get the current working directory for the given HOST/USER pair.
  416. Returns ( DIR . LINE ) where DIR is either the directory or NIL if not found,
  417. and LINE is the relevant success or fail line from the FTP-client."])
  418. (byte-code "└ ┬└ç" [ange-ftp-make-hashtable ange-ftp-expand-dir-hashtable "^5.0 \\([^: ]+\\):" ange-ftp-expand-dir-regexp] 1)
  419. (fset 'ange-ftp-expand-dir #[(host user dir) "└    \n\"ë ₧A    ╞\n╞░╔\n\"ë åó\n╠ÿ¼╕\n═ÿ¼│ ╬=½«╨Q╥    \n╙╘E╒╓\"$ëA┘\"¡ç┌ö┌òO + ¼¿█ÿ½ë▄    \n\"@ ¬Ö▌    \n█#▀Äα    \n#½ç▄    \n\"@ * ½ô½ç ß\" Γ \n#ê ,ç" [ange-ftp-host-type host user host-type ange-ftp-fix-path-func-alist fix-pathname-func "/" dir key ange-ftp-get-hash-entry ange-ftp-expand-dir-hashtable res "anonymous" "ftp" unix ange-ftp-expand-dir-regexp "\\|" ange-ftp-good-msgs ange-ftp-send-cmd get "/dev/null" format "expanding %s" result line string-match 1 "~" ange-ftp-get-pwd ange-ftp-expand-dir home ((ange-ftp-cd host user home)) ange-ftp-cd reverse ange-ftp-put-hash-entry] 8 "\
  420. Return the result of doing a PWD in the current FTP session to machine HOST
  421. logged in as user USER and cd'd to directory DIR."])
  422. (fset 'ange-ftp-canonize-filename #[(n) "└┴\n\"½ç\n├òS─O┼\n!ëâá@A@╟8    \n└╦\"¼╓└╠\"½│├ö├òO├ò─O╧\n    #ë½ëP¬ë╤╥╙─O\"ê+¬£╧\n    ╘#ë½ï╒!P¬ä╤╓!ê)╫!└╪\"½ç╙─O┘\n\"+¬ö┌\n!█=½à╫\n!¬ê╫▄\n!▌\n!\")ç" [string-match ".+//" n 0 nil ange-ftp-ftp-path parsed 2 path user host "^/" "^~[^/]*" tilda rest ange-ftp-expand-dir dir error "User \"%s\" is not known" 1 "~" ange-ftp-real-file-name-as-directory "Unable to obtain CWD" ange-ftp-real-expand-file-name "^//" ange-ftp-replace-path-component string-to-char 47 ange-ftp-real-file-name-nondirectory ange-ftp-real-file-name-directory] 6 "\
  423. Take a string and short-circuit //, /. and /.."])
  424. (fset 'ange-ftp-expand-file-name #[(name &optional default) "└ ┬Ä├ !┼=½á╞╟ \"½è ╚òS╔Oë¬Ä╞╩ \"½è ╚òS╔Oë¼`├ !╦=½à╠ !¬¿├ !┼=½à═ !¬£ G╚U½è═«é!¬î═╨«é! P!*ç" [match-data match-data ((store-match-data match-data)) string-to-char name 47 string-match ".+//" 0 nil "/~" 126 ange-ftp-real-expand-file-name ange-ftp-canonize-filename default default-directory file-name-as-directory] 3 "\
  425. Documented as original."])
  426. (defvar ange-ftp-file-name-as-directory-alist nil "\
  427. Association list of ( TYPE . FUNC ) pairs, where
  428. FUNC converts a filename to a directory name for the operating
  429. system TYPE.")
  430. (fset 'ange-ftp-file-name-as-directory #[(name) "└    !ë½Ö├\n8─ÿ½â    ¬Æ┼\n@!₧A«ü╟    !¬â╟    !)ç" [ange-ftp-ftp-path name parsed 2 "" ange-ftp-host-type ange-ftp-file-name-as-directory-alist ange-ftp-real-file-name-as-directory] 3 "\
  431. Documented as original."])
  432. (fset 'ange-ftp-file-name-directory #[(name) "└    !ë½¥├\n8┼ ╟Ä╚╔ \"*½â    ¬å╩    ╦ !\")¬â╦    !)ç" [ange-ftp-ftp-path name parsed 2 path match-data match-data ((store-match-data match-data)) string-match "^~[^/]*$" ange-ftp-replace-path-component ange-ftp-real-file-name-directory] 5 "\
  433. Documented as original."])
  434. (fset 'ange-ftp-file-name-nondirectory #[(name) "└    !ë½Ü├\n8┼ ╟Ä╚╔ \"*½â╩¬â╦ !)¬â╦    !)ç" [ange-ftp-ftp-path name parsed 2 path match-data match-data ((store-match-data match-data)) string-match "^~[^/]*$" "" ange-ftp-real-file-name-nondirectory] 4 "\
  435. Documented as original."])
  436. (fset 'ange-ftp-directory-file-name #[(dir) "└    !ë½è├    ─┼\n8!\"¬â─    !)ç" [ange-ftp-ftp-path dir parsed ange-ftp-replace-path-component ange-ftp-real-directory-file-name 2] 6 "\
  437. Documented as original."])
  438. (fset 'ange-ftp-binary-file #[(file) "└ ┬Ä├ \"*ç" [match-data match-data ((store-match-data match-data)) string-match ange-ftp-binary-file-name-regexp file] 3 "\
  439. Returns whether the given FILE is to be considered as a binary file for
  440. ftp transfers."])
  441. (fset 'ange-ftp-write-region #[(start end filename &optional append visit) "└    !┬    !ëâ½ @ A@╞╟ 8!╔ !\n╦    ! ½â═¬ü╬╨    !╥Ä╙╘ ╒ ╪Ä┘\n▄%ê, ½à▐ \"ê▀\n!ë ½ëß Γ 8#ê)π \nEΣσ\"$ë&@¼ìτΦΘΣΩ&A\"    E\"ê*╙=½èδ ê    ∞▄!êφε\"ê∩    !.¬ï┘    %)ç" [expand-file-name filename ange-ftp-ftp-path parsed host user ange-ftp-quote-string 2 path ange-ftp-make-tmp-name temp ange-ftp-binary-file binary append put cmd ange-ftp-abbreviate-filename abbr ((byte-code "└    !ê\n½à├ \"ê└ç" [ange-ftp-del-tmp-name temp binary ange-ftp-set-ascii-mode host user] 3)) t buffer-file-name buffer-modified-p mod-p executing-macro ((byte-code "┬ !ç" [filename buffer-file-name set-buffer-modified-p mod-p] 2)) ange-ftp-real-write-region start end nil visit ange-ftp-set-binary-mode file-attributes attr ange-ftp-set-xfer-size 7 ange-ftp-send-cmd format "Writing %s" result signal ftp-error "Opening output file" "FTP Error: \"%s\"" ange-ftp-set-buffer-mode set-buffer-modified-p ange-ftp-message "Wrote %s" ange-ftp-add-file-entry] 8 "\
  442. Documented as original." "r\nFWrite region to file: "])
  443. (fset 'ange-ftp-insert-file-contents #[(filename &optional visit) "└ ê┴\n!├\n!ëâ╛½â\n╟\n!¼æ╚    ╩╦\n! \"ê╟\n!â╢ @ A@╧╨ 8!╥!╘\n!╓\n!╚┘Ľç┌\"ê█▄E▌▐\"$ë@¼ìαßΓ▌πA\"\nE\"ê)Σ!¼îσ&!¼åΣ!½ïτ\"A@¬èαßΦ▌Θ\n\"D\"ê)½â\n\n.D¬îαΩΓ\nD\"¬äτ\n\")ç" [barf-if-buffer-read-only expand-file-name filename ange-ftp-ftp-path parsed visit buffer-file-name file-exists-p nil ange-ftp-ls-cache-file ange-ftp-del-hash-entry file-name-directory ange-ftp-files-hashtable host user ange-ftp-quote-string 2 path ange-ftp-make-tmp-name temp ange-ftp-binary-file binary ange-ftp-abbreviate-filename abbr size ((byte-code "½à┴\n \"ê─!ç" [binary ange-ftp-set-ascii-mode host user ange-ftp-del-tmp-name temp] 3)) ange-ftp-set-binary-mode ange-ftp-send-cmd get format "Retrieving %s" result signal ftp-error "Opening input file" "FTP Error: \"%s\"" ange-ftp-real-file-readable-p sleep-for ange-ftp-retry-time ange-ftp-real-insert-file-contents "Opening input file:" "FTP Error: %s not arrived or readable" file-error] 8 "\
  444. Documented as original."])
  445. (fset 'ange-ftp-revert-buffer #[(arg noconfirm) "`    ¼à┬├!¬º ¼ê┼╞╟    \"!¡£╚    ╚╩ ê╦ ê)╠    ═\"ê)d^bê╬╚!ê═)ç" [opoint buffer-file-name error "Buffer does not seem to be associated with any file" noconfirm yes-or-no-p format "Revert buffer from file %s? " nil buffer-read-only unlock-buffer erase-buffer insert-file-contents t after-find-file] 4 "\
  446. Revert this buffer from a remote file using ftp."])
  447. (fset 'ange-ftp-expand-symlink #[(file dir) "└    !½à┬     \"ç─     \"ç" [file-name-absolute-p file ange-ftp-replace-path-component dir expand-file-name] 3])
  448. (fset 'ange-ftp-file-symlink-p #[(file) "└    !┬    !½«├─    !ë┼ÿ½â╞¬ü    )╟╚    !!\"ë    ;¡æ╩    !½ë╦╚    !    \"¬é    )ç╠    !ç" [ange-ftp-expand-file-name file ange-ftp-ftp-path ange-ftp-get-hash-entry file-name-nondirectory "" "." ange-ftp-get-files file-name-directory file-ent file-name-absolute-p ange-ftp-replace-path-component ange-ftp-real-file-symlink-p] 6 "\
  449. Documented as original."])
  450. (fset 'ange-ftp-file-exists-p #[(path) "└    !┬    !½£├    !¡Ü─    !ë;½î╞╟╚╔    !!\"!¬ü╩)ç╦    !ç" [expand-file-name path ange-ftp-ftp-path ange-ftp-file-entry-p ange-ftp-get-file-entry file-ent file-exists-p ange-ftp-expand-symlink file-name-directory directory-file-name t ange-ftp-real-file-exists-p] 7 "\
  451. Documented as original."])
  452. (fset 'ange-ftp-file-directory-p #[(path) "└    !┬    !½Ö├─    !!ë;½î╞╟╚╔    !!\"!¬ü)ç╩    !ç" [expand-file-name path ange-ftp-ftp-path ange-ftp-get-file-entry ange-ftp-file-name-as-directory file-ent file-directory-p ange-ftp-expand-symlink file-name-directory directory-file-name ange-ftp-real-file-directory-p] 7 "\
  453. Documented as original."])
  454. (fset 'ange-ftp-directory-files #[(directory &optional full match &rest v19-args) "└    !┬    !½╬├    !ê─┼    !!╞ë    ╩    !╦  ═Ä    ½⌐    @    A    ½ê╧\"½f½å    P¬éB¬S*ƒ+ç╤╥    %ç" [expand-file-name directory ange-ftp-ftp-path ange-ftp-barf-if-not-directory ange-ftp-hash-table-keys ange-ftp-get-files nil f files tail file-name-as-directory match-data match-data ((store-match-data match-data)) match string-match full apply ange-ftp-real-directory-files v19-args] 6 "\
  455. Documented as original."])
  456. (fset 'ange-ftp-file-attributes #[(file) "└    !┬    !ëâÄ─    !ë┼ÿ½â╞¬ü    )╟╚    !!    \n╦\n    \"¡α @ A@╠ 8═\n    \";½Å╥!½ë╙╚    !\"¬é╘ëë╒╓╫╘;½â╪¬ê½â┘¬ü┌█P▄▌▐▀α\"▀α\"ñ▀αß!\"ñ\"╘» ,*¬âΓ    !)ç" [expand-file-name file ange-ftp-ftp-path parsed file-name-nondirectory "" "." ange-ftp-get-files file-name-directory files part ange-ftp-hash-entry-exists-p 2 ange-ftp-get-hash-entry dirp path user host file-name-absolute-p ange-ftp-expand-symlink -1 (0 0) (0 0) (0 0) "l" "d" "-" "?????????" nil apply + mapcar identity directory-file-name ange-ftp-real-file-attributes] 18 "\
  457. Documented as original."])
  458. (fset 'ange-ftp-file-writable-p #[(file) "└    !┬    !½ï├    !«ë─┼    !!ç╞    !ç" [expand-file-name file ange-ftp-ftp-path file-exists-p file-directory-p file-name-directory ange-ftp-real-file-writable-p] 3 "\
  459. Documented as original."])
  460. (fset 'ange-ftp-file-readable-p #[(file) "└    !┬    !½ä├    !ç─    !ç" [expand-file-name file ange-ftp-ftp-path file-exists-p ange-ftp-real-file-readable-p] 2 "\
  461. Documented as original."])
  462. (fset 'ange-ftp-delete-file #[(file) "└    !┬    !ë½╣ @ A@╞╟ 8!╔    !\n╦ ╠D═╬\n\"$ë@¼ì╨╤╥═╙A\"    E\"ê╘    !-¬â╒    !)ç" [expand-file-name file ange-ftp-ftp-path parsed host user ange-ftp-quote-string 2 path ange-ftp-abbreviate-filename abbr ange-ftp-send-cmd delete format "Deleting %s" result signal ftp-error "Removing old name" "FTP Error: \"%s\"" ange-ftp-delete-file-entry ange-ftp-real-delete-file] 8 "\
  463. Documented as original." "fDelete file: "])
  464. (fset 'ange-ftp-verify-visited-file-modtime #[(buf) "└    !ë;½ê├\n!½â─¬â┼    !)ç" [buffer-file-name buf name ange-ftp-ftp-path t ange-ftp-real-verify-visited-file-modtime] 3 "\
  465. Documented as original."])
  466. (fset 'ange-ftp-backup-buffer #[nil "└\n<¡û ;¡Æ─ !ë¡ï\n?«ç┼    @!\n>??¡é╞ )ç" [nil parsed ange-ftp-make-backup-files buffer-file-name ange-ftp-ftp-path ange-ftp-host-type ange-ftp-real-backup-buffer] 2 "\
  467. Documented as original."])
  468. (byte-code "└┴Mê┬├Mê─┼Mê╞╟Mç" [ange-ftp-barf-or-query-if-file-exists #[(absname querystring interactive) "└    !¡Ö\n¼å├─    C\"ç┼╞╟    #!?¡à├─    C\"ç" [file-exists-p absname interactive signal file-already-exists yes-or-no-p format "File %s already exists; %s anyway? " querystring] 5] ange-ftp-copy-file-internal #[(filename newname ok-if-already-exists keep-date &optional msg cont nowait) "└    !└\n!├\n!½ç└─    !\n\"┼    !┼\n!ë¼¢¼ù╚    \n    \n$ê à?╠ ═╬#é?¡â@¡äA@¡å╤╥8!╘    !¡â@¡äA@¡å╤╥8!╘\n    \"┌    !«â┌\n!▄▄    ½à    º½ê▀\nα    º#ê½εß!¼ä½åΓ!½çπ\"êΣσ«ü\nE&«û½ï½çτΦ\"¬çτΘ#Ω    \n& +»+&¬ÑΩ═▄    \n&▄ë +&. *ç" [expand-file-name filename newname file-directory-p file-name-nondirectory ange-ftp-ftp-path t-parsed f-parsed ange-ftp-real-copy-file ok-if-already-exists keep-date cont ange-ftp-call-cont t "Copied locally" f-host f-user ange-ftp-quote-string 2 f-path ange-ftp-abbreviate-filename f-abbr t-host t-user t-path t-abbr ange-ftp-binary-file binary nil temp1 temp2 ange-ftp-barf-or-query-if-file-exists "copy to it" ange-ftp-use-gateway-p ange-ftp-make-tmp-name ange-ftp-set-binary-mode ange-ftp-send-cmd get msg format "Getting %s" "Copying %s to %s" ange-ftp-cf1 nowait] 25] ange-ftp-cf1 #[(result line filename newname binary msg f-parsed f-host f-user f-path f-abbr t-parsed t-host t-user t-path t-abbr temp1 temp2 cont nowait) "½£┴Ä\n¼û ½ä─ !ê¼î╞╟╚╔╩\" E\"ê)\nâ╘ â┬═!½å╧! ½₧½ô ÿ½ä╤¬£╥ ╙#ê¬ô ╤¬î½ê╥ ╙#ê½ç╒\"ê╫«é !ë½ï┘┌8#ê)█▄«é E«û½ï½ç╔α!\"¬ç╔Γ#$#σ! »&&çσ╙╤! &    çτ\n#ç" [line ((byte-code "½à┴\n \"ê┴ç" [binary ange-ftp-set-ascii-mode f-host f-user] 3)) result temp1 ange-ftp-del-tmp-name cont signal ftp-error "Opening input file" format "FTP Error: \"%s\"" filename t-parsed ange-ftp-use-gateway-p t-host ange-ftp-make-tmp-name temp2 nil ange-ftp-real-copy-file t binary ange-ftp-set-binary-mode t-user file-attributes attr ange-ftp-set-xfer-size 7 ange-ftp-send-cmd put t-path msg f-parsed "Putting %s" newname "Copying %s to %s" f-abbr t-abbr ange-ftp-cf2 nowait ange-ftp-call-cont] 14] ange-ftp-cf2 #[(result line newname t-host t-user binary temp1 temp2 cont) "└Ä    ½¢┬Ä ¼Å ¼î┼╞╟╚╔    \"\nE\"ê╦\n!)¬ï ¡ç═ \n╬#)ç" [((byte-code "½ä┴!ê\n½ä┴\n!ê├ #ç" [temp1 ange-ftp-del-tmp-name temp2 ange-ftp-call-cont cont result line] 4)) line ((byte-code "½à┴\n \"ê┴ç" [binary ange-ftp-set-ascii-mode t-host t-user] 3)) result cont signal ftp-error "Opening output file" format "FTP Error: \"%s\"" newname ange-ftp-add-file-entry temp1 ange-ftp-real-copy-file t] 6]] 2)
  469. (fset 'ange-ftp-copy-file #[(filename newname &optional ok-if-already-exists keep-date) "└    \n ┼ët&ç" [ange-ftp-copy-file-internal filename newname ok-if-already-exists keep-date nil] 8 "\
  470. Documented as original." "fCopy file: \nFCopy %s to file: \np"])
  471. (fset 'ange-ftp-rename-remote-to-remote #[(filename newname f-parsed t-parsed binary) "@A@    @    A@ë ÿ½┘ \nÿ½╘╞╟8!╞╟    8!    ╩    E ╠!╠\"╤  ╥╙#$ë@¼É╒╓╫╥╪A\"F\"ê┘!ê┌!.¬ì█▄▌$ê▐!,ç" [f-parsed t-parsed t-user t-host f-user f-host ange-ftp-quote-string 2 f-path t-path rename cmd ange-ftp-abbreviate-filename filename fabbr newname nabbr ange-ftp-send-cmd format "Renaming %s to %s" result signal ftp-error "Renaming" "FTP Error: \"%s\"" ange-ftp-add-file-entry ange-ftp-delete-file-entry ange-ftp-copy-file-internal t nil delete-file] 9 "\
  472. Rename remote file FILE to remote file NEWNAME."])
  473. (fset 'ange-ftp-rename-local-to-remote #[(filename newname) "└    !└     \"┼╞\n #╚     ╔╩%ê╩ ╠    !,ç" [ange-ftp-abbreviate-filename filename fabbr newname nabbr format "Renaming %s to %s" msg ange-ftp-copy-file-internal t nil ange-ftp-process-verbose delete-file] 6 "\
  474. Rename local FILE to remote file NEWNAME."])
  475. (fset 'ange-ftp-rename-remote-to-local #[(filename newname) "└    !└     \"┼╞\n #╚     ╔╩%ê╩ ╠    !,ç" [ange-ftp-abbreviate-filename filename fabbr newname nabbr format "Renaming %s to %s" msg ange-ftp-copy-file-internal t nil ange-ftp-process-verbose delete-file] 6 "\
  476. Rename remote file FILE to local file NEWNAME."])
  477. (fset 'ange-ftp-rename-file #[(filename newname &optional ok-if-already-exists) "└    !└\n!├    !├\n! ¼â¡â╞    ! ¼â½æ½àº½ê╔\n╩º#ê ½ô½è╦    \n %¬ò╠    \n\"¬Å½å═    \n\"¬å╬    \n#+ç" [expand-file-name filename newname ange-ftp-ftp-path f-parsed t-parsed ange-ftp-binary-file binary ok-if-already-exists ange-ftp-barf-or-query-if-file-exists "rename to it" ange-ftp-rename-remote-to-remote ange-ftp-rename-remote-to-local ange-ftp-rename-local-to-remote ange-ftp-real-rename-file] 6 "\
  478. Documented as original." "fRename file: \nFRename %s to file: \np"])
  479. (defvar ange-ftp-dired-host-type nil "\
  480. The host type associated with a dired buffer. (buffer local)")
  481. (make-variable-buffer-local 'ange-ftp-dired-host-type)
  482. (fset 'ange-ftp-dired-readin #[(dirname buffer) "└    !┬    !è┼╞ \"êqê╚    ~ê╩ ê╦    ! ½ö╠ @!ë╧    ╤#cê)¬¼╥    !½Ä╙╘╚╚    &ê¬Ö╒    !╙╚╚╪┘┌█    !R&ê)ebêm¼ê▄cê▌yê¬uebê*┼▐ \"*ç" [ange-ftp-abbreviate-filename dirname ange-ftp-ftp-path parsed file ange-ftp-message "Reading directory %s..." buffer nil buffer-read-only erase-buffer expand-file-name ange-ftp-host-type host-type ange-ftp-dired-host-type ange-ftp-ls dired-listing-switches t ange-ftp-real-file-directory-p call-process "ls" ange-ftp-real-file-name-directory default-directory shell-file-name "-c" "ls " " " ange-ftp-real-file-name-nondirectory "  " 1 "Reading directory %s...done"] 12 "\
  483. Documented as original."])
  484. (fset 'ange-ftp-dired-revert #[(&optional arg noconfirm) "½ë┴┬!!½é├┼\"ç" [dired-directory ange-ftp-ftp-path expand-file-name nil ange-ftp-ls-cache-file ange-ftp-real-dired-revert arg noconfirm] 3 "\
  485. Documented as original."])
  486. (defvar ange-ftp-dired-re-exe-alist nil "\
  487. Association list of regexps (strings) which match file lines of
  488.  executable files.")
  489. (defvar ange-ftp-dired-re-dir-alist nil "\
  490. Association list of regexps (strings) which match file lines of
  491.  subdirectories.")
  492. (defvar ange-ftp-dired-insert-headerline-alist nil "\
  493. Association list of (TYPE . FUNC ) pairs, where FUNC is
  494. the function to be used by dired to insert the headerline of
  495. the dired buffer.")
  496. (defvar ange-ftp-dired-move-to-filename-alist nil "\
  497. Association list of (TYPE . FUNC ) pairs, where FUNC is
  498. the function to be used by dired to move to the beginning of a
  499. filename.")
  500. (defvar ange-ftp-dired-move-to-end-of-filename-alist nil "\
  501. Association list of (TYPE . FUNC ) pairs, where FUNC is
  502. the function to be used by dired to move to the end of a
  503. filename.")
  504. (defvar ange-ftp-dired-get-filename-alist nil "\
  505. Association list of (TYPE . FUNC ) pairs, where FUNC is
  506. the function to be used by dired to get a filename from the
  507. current line.")
  508. (defvar ange-ftp-dired-between-files-alist nil "\
  509. Association list of (TYPE . FUNC ) pairs, where FUNC is
  510. the function to be used by dired to determine when the point
  511. is on a line between files.")
  512. (defvar ange-ftp-dired-ls-trim-alist nil "\
  513. Association list of ( TYPE . FUNC ) pairs, where FUNC is
  514. a function which trims extraneous lines from a directory listing.")
  515. (defvar ange-ftp-dired-clean-directory-alist nil "\
  516. Association list of ( TYPE . FUNC ) pairs, where FUNC is
  517. a function which cleans out old versions of files in the OS TYPE.")
  518. (defvar ange-ftp-dired-flag-backup-files-alist nil "\
  519. Association list of ( TYPE . FUNC ) pairs, where FUNC is
  520. a functions which flags the backup files for deletion in the OS TYPE.")
  521. (defvar ange-ftp-dired-backup-diff-alist nil "\
  522. Association list of ( TYPE . FUNC ) pairs, where FUNC diffs
  523. a file with its backup. The backup file is determined according to
  524. the OS TYPE.")
  525. (fset 'ange-ftp-tree-dired-readin #[(dirname buffer) "└    !ë½╚è qê─\n@!½Ä╟=½ë╚    \"½é╔\n₧ ₧ ë½ê╬╧!ALê ½ê╬╨! ALê>½â╥+)╘     \"ç" [ange-ftp-ftp-path dirname parsed buffer ange-ftp-host-type ange-ftp-dired-host-type ange-ftp-dl-dir-regexp unix string-match unix:dl ange-ftp-dired-re-exe-alist ange-ftp-dired-re-dir-alist dentry eentry make-local-variable dired-re-exe dired-re-dir ange-ftp-dumb-host-types "-Al" dired-actual-switches ange-ftp-real-dired-readin] 4 "\
  526. Documented as original."])
  527. (fset 'ange-ftp-dired-insert-headerline #[(dir) "½å    ₧A«ü┬ !ç" [ange-ftp-dired-host-type ange-ftp-dired-insert-headerline-alist ange-ftp-real-dired-insert-headerline dir] 2 "\
  528. Documented as original."])
  529. (fset 'ange-ftp-dired-move-to-filename #[(&optional raise-error eol) "½å    ₧A«ü┬ \"ç" [ange-ftp-dired-host-type ange-ftp-dired-move-to-filename-alist ange-ftp-real-dired-move-to-filename raise-error eol] 3 "\
  530. Documented as original."])
  531. (fset 'ange-ftp-dired-move-to-end-of-filename #[(&optional no-error) "½å    ₧A«ü┬ !ç" [ange-ftp-dired-host-type ange-ftp-dired-move-to-end-of-filename-alist ange-ftp-real-dired-move-to-end-of-filename no-error] 2 "\
  532. Documented as original."])
  533. (fset 'ange-ftp-dired-get-filename #[(&optional localp no-error-if-not-filep) "½å    ₧A«ü┬ \"ç" [ange-ftp-dired-host-type ange-ftp-dired-get-filename-alist ange-ftp-real-dired-get-filename localp no-error-if-not-filep] 3 "\
  534. Documented as original."])
  535. (fset 'ange-ftp-dired-between-files #[nil "½å    ₧A«ü┬ ç" [ange-ftp-dired-host-type ange-ftp-dired-between-files-alist ange-ftp-real-dired-between-files] 2 "\
  536. Documented as original."])
  537. (defvar ange-ftp-bob-version-alist nil "\
  538. Association list of pairs ( TYPE . FUNC ), where FUNC is
  539. a function to be used to bob the version number off of a filename
  540. in OS TYPE.")
  541. (fset 'ange-ftp-dired-find-file #[nil "└    ½å    \n₧A«ü├─ !!ç" [find-file ange-ftp-dired-host-type ange-ftp-bob-version-alist identity dired-get-filename] 3 "\
  542. Documented as original." nil])
  543. (defvar ange-ftp-dired-compress-make-compressed-filename-alist nil "\
  544. Association list of ( TYPE . FUNC ) pairs, where FUNC converts a
  545. filename to the filename of the associated compressed file.")
  546. (fset 'ange-ftp-dired-compress-make-compressed-filename #[(name &optional reverse) "└    !┬ë½ô┼ @!₧Aë½ç     \"¬ù½É╚╔    \"½ç    ╩ëöO¬å    ¬â    ╦P*ç" [ange-ftp-ftp-path name nil conversion-func parsed ange-ftp-host-type ange-ftp-dired-compress-make-compressed-filename-alist reverse string-match "\\.Z$" 0 ".Z"] 4 "\
  547. Converts a filename to the filename of the associated compressed
  548. file. With an optional reverse argument, the reverse conversion is done."])
  549. (fset 'ange-ftp-dired-clean-directory #[(keep) "½å    ₧A«ü┬ !ç" [ange-ftp-dired-host-type ange-ftp-dired-clean-directory-alist ange-ftp-real-dired-clean-directory keep] 2 "\
  550. Documented as original." "P"])
  551. (fset 'ange-ftp-dired-backup-diff #[(&optional switches) "½å    ₧A«ü┬ !ç" [ange-ftp-dired-host-type ange-ftp-dired-backup-diff-alist ange-ftp-real-dired-backup-diff switches] 2 "\
  552. Documented as original." (byte-code "└┴!¡â┴┬!Cç" [fboundp diff-read-switches "Diff with switches: "] 2)])
  553. (fset 'ange-ftp-dired-fixup-subdirs #[(start file) "└îè\n`}ê\nbê├    ─┼#¡Ü╞öbê`╞ò{`╞ò|ê╚    \"cê)¬_+ç" ["^\\([^ \n]+\\)\\(:\\)[\n]" subdir-regexp start re-search-forward nil t 1 name ange-ftp-replace-path-component file] 4 "\
  554. Turn each subdir name into a valid ange-ftp filename."])
  555. (fset 'ange-ftp-dired-ls #[(file switches &optional wildcard full-directory-p) "└    !ëâ╟`─\n8╞\n@!ë>    ╩ ╩ ½╬╬>¼è╧    ╩#cé├╧    ╤P╩#cê╥!ë¡⌐╘!îè `}ê bêm?¡ò╓ ½î╫╩╪#½ä┘┌!ê█yê¬g+)¬╤▄▌\"½ê▐    ▀αO\"▄ß\"½Å╧    ╩#cêΓ     \"ê¬ö╧        ¼ç▄π\"¡é$#cê$?¡ö%₧Aë ¡ëî `}ê  ).¬ëµ    $$)ç" [ange-ftp-ftp-path file parsed pt 2 path ange-ftp-host-type host-type ange-ftp-dumb-host-types dumb nil trim-func case-fold-search wildcard (unix dumb-unix) ange-ftp-ls switches "d" ange-ftp-real-file-name-directory dir regexp-quote dirq dired-move-to-filename re-search-forward t replace-match "" 1 string-match "/\\.$" ange-ftp-replace-path-component 0 -1 "R" ange-ftp-dired-fixup-subdirs "[aA]" full-directory-p ange-ftp-dired-ls-trim-alist ange-ftp-real-dired-ls] 7 "\
  556. Documented as original."])
  557. (defvar ange-ftp-remote-shell-file-name (byte-code "┴>½é┬ç├ç" [system-type (hpux usg-unix-v) "remsh" "rsh"] 2) "\
  558. Remote shell used by ange-ftp.")
  559. (fset 'ange-ftp-dired-run-shell-command #[(command &optional in-background) "└    !ë@\nA@┼\n8\n¼ê╟    \"¬«G╩V½ë╦╠R═╬ $╨╤\"ê    ½å╥!¬ä╙!,ç" [ange-ftp-ftp-path default-directory parsed host user 2 path ange-ftp-real-dired-run-shell-command command in-background 0 "cd " "; " format "%s %s \"%s\"" ange-ftp-remote-shell-file-name ange-ftp-message "Remote command '%s' ..." comint::background shell-command] 6 "\
  560. Documented as original."])
  561. (fset 'ange-ftp-make-directory #[(dir) "└    !½à┬├    \"ç─    !ë½╨@A@╚╔!╩=½ç╦╠8!¬à═╠8!!╧    !╤╥D╙╘\"$ë@¼Ä╓╙╫    A##ê╪    ┘\"-¬â┌    !)ç" [file-exists-p dir error "Cannot make directory %s: file already exists" ange-ftp-ftp-path parsed host user ange-ftp-quote-string ange-ftp-host-type unix ange-ftp-real-directory-file-name 2 ange-ftp-real-file-name-as-directory path ange-ftp-abbreviate-filename abbr ange-ftp-send-cmd mkdir format "Making directory %s" result ange-ftp-error "Could not make directory %s: %s" ange-ftp-add-file-entry t ange-ftp-real-make-directory] 8 "\
  562. Documented as original." (byte-code "└┴┬!!Cç" [expand-file-name read-file-name "Make directory: "] 3)])
  563. (fset 'ange-ftp-remove-directory #[(dir) "└    !½╒┬    !ë½╔ @ A@╞╟ !╚=½ç╔╩ 8!¬à╦╩ 8!! ═    !╧ ╨ D╤╥\"$ë@¼î╘ ╤╒    A##ê╓    ╫\"-¬â╪    !)ç┘┌    \"ç" [file-directory-p dir ange-ftp-ftp-path parsed host user ange-ftp-quote-string ange-ftp-host-type unix ange-ftp-real-directory-file-name 2 ange-ftp-real-file-name-as-directory path ange-ftp-abbreviate-filename abbr ange-ftp-send-cmd rmdir format "Removing directory %s" result ange-ftp-error "Could not remove directory %s: %s" ange-ftp-delete-file-entry t ange-ftp-real-remove-directory error "Not a directory: %s"] 8 "\
  564. Documented as original." (byte-code "└┴┬├ë─$!Cç" [expand-file-name read-file-name "Remove directory: " nil confirm] 6)])
  565. (fset 'ange-ftp-diff #[(fn1 fn2 &optional switches) ";½ä    ;¼å┬├    #ê ¼ö;½â¬î<½ç╞╟╚#¬ü╔╩!╩    !╦! ╦    ! ¼àâë ¡à╬ @!¡à╬@! ¡â╤!¡â╤    !╘!╘    !┘┌Ľê½ä┬█!ê½æ╩▄    !\"╦! ╤!½æ╩▄!    \"╦    !╤    ! ½î▌▐▀αß\"%ê½î▌    ▐▀αß    \"%ê\"½äπΣ!êσµ!êτ«ü«ü     #êΦΘ!½ô)½│Ω)!δ=½½∞)!ê¬mΦφ!½ƒ-½¢ε-!½ò∩-!½ÅΩ∩-!!δ=½à∞ ê¬a\"½äπ≡!êè±≥!qêebê≤⌠P▀▐#½ç⌡⌠P!ê½ÿ÷!7ebê≤7▀▐#½å⌡!ê¬r)¡ÿ÷!8ebê≤8▀▐#¡å⌡    !ê¬r).\n¬àτ     #,ç" [fn1 fn2 error "diff: arguments must be strings: %s %s" switches diff-switches mapconcat identity " " "" expand-file-name ange-ftp-ftp-path pa1 pa2 ange-ftp-make-tmp-name tmp1 tmp2 ange-ftp-binary-file bin1 bin2 file-directory-p dir1 dir2 default-directory old-dir "/tmp" ((byte-code "½ä┴!ê\n½ä┴\n!ê┴ç" [tmp1 ange-ftp-del-tmp-name tmp2] 2)) "can't compare remote directories" file-name-nondirectory ange-ftp-copy-file-internal t nil format "Getting %s" ange-ftp-process-verbose ange-ftp-message "doing diff..." sit-for 0 ange-ftp-real-diff boundp compilation-process process-status run accept-process-output compilation-last-buffer buffer-name get-buffer-process "doing diff...done" get-buffer-create "*compilation*" search-forward "cd " replace-match shell-quote q1 q2] 8 "\
  566. Documented as original." (diff-read-args "Diff: " "Diff %s with: " "Diff with switches: ")])
  567. (fset 'ange-ftp-dired-call-process #[(program discard &rest arguments) "└    !½à┬├─Åç┼╞╚    ?╚\n&ç" [ange-ftp-ftp-path default-directory oops (byte-code "┴ܽä┬ !ç─ܽä┼ !ç╞ܽä╟ !ç╚╔\"ç" [program "compress" ange-ftp-call-compress arguments "uncompress" ange-ftp-call-uncompress "chmod" ange-ftp-call-chmod error "Unknown remote command: %s"] 3) ((ftp-error (byte-code "└┴\nA@├\n8─\n8$cç" [format "%s: %s, %s\n" oops 2 3] 6)) (error (byte-code "└┴\nA@\"cç" [format "%s\n" oops] 3))) apply call-process program nil discard arguments] 7 "\
  568. Documented as original."])
  569. (fset 'ange-ftp-call-compress #[(args) "G┴U½å@┬ÿ¼à├─\"êA@╞!╚@!    ╚@!\n╦! ═!╦!╨╤ \"╨╙\"╒Ä╓    ╫╪%ê½å┌█ \"ê▄``╪╫╪▐╨▀    \n#&ê½å┌α \"êß ΓU¡Æ╪π!ê)╓\n╫╪%.\nç" [args 2 "-f" error "ange-ftp-call-compress: missing -f flag and/or missing filename: %s" file ange-ftp-ftp-path parsed ange-ftp-make-tmp-name tmp1 tmp2 ange-ftp-abbreviate-filename abbr ange-ftp-dired-compress-make-compressed-filename nfile nabbr format "Getting %s" msg1 "Putting %s" msg2 ((byte-code "└    !ê└\n!ç" [ange-ftp-del-tmp-name tmp1 tmp2] 2)) ange-ftp-copy-file-internal t nil ange-ftp-process-verbose ange-ftp-message "Compressing %s..." call-process-region shell-file-name "-c" "compress -f -c < %s > %s" "Compressing %s...done" buffer-size 0 delete-file] 12 "\
  570. Perform a compress command on a remote file.
  571. Works by taking a copy of the file, compressing it and copying the file
  572. back."])
  573. (fset 'ange-ftp-call-uncompress #[(args) "G┴U¼à┬├\"ê@┼ !╟@!╟@!    ╩ ! ╠ ═\"╩!╨╤ \"╨╙\"╒Ä╓ ╫╪%ê½å┌█ \"ê▄``╪╫╪▐╨▀    #&ê½å┌α \"êß ΓU¡Æ╪π !ê)╓    ╫╪%.\nç" [args 1 error "ange-ftp-call-uncompress: missing filename: %s" file ange-ftp-ftp-path parsed ange-ftp-make-tmp-name tmp1 tmp2 ange-ftp-abbreviate-filename abbr ange-ftp-dired-compress-make-compressed-filename reverse nfile nabbr format "Getting %s" msg1 "Putting %s" msg2 ((byte-code "└    !ê└\n!ç" [ange-ftp-del-tmp-name tmp1 tmp2] 2)) ange-ftp-copy-file-internal t nil ange-ftp-process-verbose ange-ftp-message "Uncompressing %s..." call-process-region shell-file-name "-c" "uncompress -c < %s > %s" "Uncompressing %s...done" buffer-size 0 delete-file] 12 "\
  574. Perform an uncompress command on a remote file.
  575. Works by taking a copy of the file, uncompressing it and copying the file
  576. back."])
  577. (byte-code "└┴Mê┬├Mê─┼Mç" [ange-ftp-call-chmod #[(args) "G┴W½à┬├\"ê@┼╞A\"ê)╟ëç" [args 2 error "ange-ftp-call-chmod: missing mode and/or filename: %s" mode mapcar #[(file) "└    !┬    !ë¡┤ @ A@╞╟ 8!╔    !\n╦ ╠E╬╧\n\"$ë@«ï╤ ╬╥    A##-)ç" [expand-file-name file ange-ftp-ftp-path parsed host user ange-ftp-quote-string 2 path ange-ftp-abbreviate-filename abbr ange-ftp-send-cmd chmod mode format "doing chmod %s" result ange-ftp-error "chmod: %s: \"%s\""] 8] nil ange-ftp-ls-cache-file] 3] ange-ftp-dired-compress #[nil "└┬ ─ !è╞yê╟!)½ï╔╩ P!ê╦ !¬ö╠═ P╬╧ $½à╦ !¬à╨!ê└+ç" [nil buffer-read-only dired-get-filename from-file ange-ftp-dired-compress-make-compressed-filename to-file 0 looking-at dired-re-sym dired-log "Attempt to compress a symbolic link:\n" dired-make-relative dired-check-process "Compressing " "compress" "-f" dired-update-file-line] 5] ange-ftp-dired-uncompress #[nil "└┬ ─ ┼\"╟╚ P╔ #½à╩ !¬å╦!ê└+ç" [nil buffer-read-only dired-get-filename from-file ange-ftp-dired-compress-make-compressed-filename reverse to-file dired-check-process "Uncompressing " "uncompress" dired-make-relative dired-update-file-line] 4]] 2)
  578. (fset 'ange-ftp-dired-flag-backup-files #[(&optional unflag-p) "½å    ₧A«ü┬ !ç" [ange-ftp-dired-host-type ange-ftp-dired-flag-backup-files-alist ange-ftp-real-dired-flag-backup-files unflag-p] 2 "\
  579. Documented as original." "P"])
  580. (fset 'ange-ftp-dired-copy-file #[(from to ok-flag &optional cont nowait) "└    !ê┬      ╞&ç" [dired-handle-overwrite to ange-ftp-copy-file-internal from ok-flag dired-copy-preserve-time nil cont nowait] 8 "\
  581. Documented as original."])
  582. (fset 'ange-ftp-dired-do-create-files #[(op-symbol file-creator operation arg &optional marker-char op1 how-to) "└┬     &)ç" [t ange-ftp-dired-do-create-files ange-ftp-real-dired-do-create-files op-symbol file-creator operation arg marker-char op1 how-to] 8 "\
  583. Documented as original."])
  584. (fset 'ange-ftp-dired-create-files #[(file-creator operation fn-list name-constructor &optional marker-char) "└┴!½╡    ½▓\n½» ─=½¬┼\n@!¼ë┼\n@!!½¢╟ \n└╔!¡é    \np╦ëëë╠\nG&ç═ \n\n%ç" [boundp ange-ftp-dired-do-create-files fn-list file-creator dired-copy-file ange-ftp-ftp-path name-constructor ange-ftp-dcf-1 operation target marker-char nil 0 ange-ftp-real-dired-create-files] 14 "\
  585. Documented as original."])
  586. (byte-code "└┴Mê┬├Mê─┼Mç" [ange-ftp-dcf-1 #[(file-creator operation fn-list name-constructor target marker-char buffer overwrite-query overwrite-backup-query failures skipped success-count total) "p┴Ä\nqê ¼Å─    \n&¬⌠ @\n \n!ë \nܽî═ ╬╧ù\n#ê ¼ó╨ A \n╓\n!B    &¬░╫ !ë¡è┘█╘▄ #)¿½ä¬ï½å▐\n!¬ü═αßΓÅ+**ç" [old-buf ((set-buffer old-buf)) buffer fn-list ange-ftp-dcf-3 failures operation total skipped success-count from name-constructor to nil dired-log "Cannot %s to same file: %s\n" ange-ftp-dcf-1 file-creator target marker-char overwrite-query overwrite-backup-query dired-make-relative file-exists-p overwrite (format "Type SPC or `y' to overwrite file `%s',\nDEL or `n' to skip to next,\nESC or `q' to not overwrite any of the remaining files,\n`!' to overwrite all remaining files with no more questions." to) help-form dired-query "Overwrite `%s'?" overwrite-confirmed dired-file-marker actual-marker-char err (byte-code "    \n ─┼    \n  \n     »╘%ç" [file-creator from to overwrite-confirmed ange-ftp-dcf-2 nil operation fn-list name-constructor target marker-char actual-marker-char buffer overwrite overwrite-query overwrite-backup-query failures skipped success-count total t] 24) ((file-error (byte-code "└┴ë\n     \n  &ç" [ange-ftp-dcf-2 nil err file-creator operation fn-list name-constructor target marker-char actual-marker-char buffer to from overwrite overwrite-confirmed overwrite-query overwrite-backup-query failures skipped success-count total] 22)))] 15] ange-ftp-dcf-2 #[(result line err file-creator operation fn-list name-constructor target marker-char actual-marker-char buffer to from overwrite overwrite-confirmed overwrite-query overwrite-backup-query failures skipped success-count total) "p┴Ä\nqê ¼â ¼Ü┼!B╚╔\n «é %ꬃ½à╬ !êT╨╤\n$ê╙ \"ê╒\nA\n&*ç" [old-buf ((set-buffer old-buf)) buffer err result dired-make-relative from failures dired-log "%s `%s' to `%s' failed:\n%s\n" operation to line overwrite dired-remove-file success-count message "%s: %d of %d" total dired-add-file actual-marker-char ange-ftp-dcf-1 file-creator fn-list name-constructor target marker-char overwrite-query overwrite-backup-query skipped] 14] ange-ftp-dcf-3 #[(failures operation total skipped success-count buffer) "p┴Ä\nqê ½ö─┼╞ G╔! &!ꬪ\n½û─┼╦\nG╔!\n&!ê¬î┼╠╔!$ê╬ *ç" [old-buf ((set-buffer old-buf)) buffer failures dired-log-summary message "%s failed for %d of %d file%s %s" operation total dired-plural-s skipped "%s: %d of %d file%s skipped %s" "%s: %s file%s." success-count dired-move-to-filename] 8]] 2)
  587. (defconst ange-ftp-dired-dl-re-dir "^. [^ /]+/[ \n]" "\
  588. Regular expression to use to search for dl directories.")
  589. (byte-code "└    ₧¼å└\nB    B└ç" [unix:dl ange-ftp-dired-re-dir-alist ange-ftp-dired-dl-re-dir] 2)
  590. (fset 'ange-ftp-dired-dl-move-to-filename #[(&optional raise-error eol) "¼à┴ê`┴├yê─┼!½å`╞\\b¬ç¡â╚╔!)ç" [eol nil case-fold-search 0 looking-at ". [^ ]+ +\\([0-9]+\\|-\\|=\\) " 2 raise-error error "No file on this line"] 2 "\
  591. In dired, move to the first character of the filename on this line."])
  592. (byte-code "└    ₧¼ä┬    B├─Mê└₧¼ä╞B└ç" [unix:dl ange-ftp-dired-move-to-filename-alist (unix:dl . ange-ftp-dired-dl-move-to-filename) ange-ftp-dired-dl-move-to-end-of-filename #[(&optional no-error eol) "`└ë ¼çè└ê`)¡çè╞╟ ╚#)ë½î    ?¡¢╩╦╠!!¬ö═ wê `=½è    ?¡å╩╬!¬ü`+ç" [nil hidden case-fold-search opoint eol selective-display search-forward "" t no-error error substitute-command-keys "File line is hidden, type \\[dired-hide-subdir] to unhide" "^ /" "No file on this line"] 5] ange-ftp-dired-move-to-end-of-filename-alist (unix:dl . ange-ftp-dired-dl-move-to-end-of-filename)] 2)
  593. (fset 'ange-ftp-file-entry-active-p #[(sym) "┴Në;?«å┬├     \"!)ç" [sym val file-exists-p ange-ftp-expand-symlink dir] 5 "\
  594. If the file entry is a symlink, returns whether the file pointed to exists.
  595. Note that DIR is dynamically bound."])
  596. (fset 'ange-ftp-file-entry-not-ignored-p #[(sym) "┴N┬!ë;½¢─    \"╟!«î╚!¡å╔\n \"?)¬ë    «å╔\n \"?*ç" [sym val symbol-name symname ange-ftp-expand-symlink dir file file-directory-p file-exists-p string-match completion-ignored-pattern] 4 "\
  597. If the file entry is not a directory (nor a symlink pointing to a directory)
  598. returns whether the file (or file pointed to by the symlink) is ignored
  599. by completion-ignored-extensions.
  600. Note that DIR and COMPLETION-IGNORED-PATTERN are dynamically bound."])
  601. (fset 'ange-ftp-file-name-all-completions #[(file dir) "└    !┬    !½¥├    !ê─    !┼    !╟╔#\n╦╠\n\"*ç    ═ÿ½ì╟╬ \"╧    \"ñç╧    \"ç" [expand-file-name dir ange-ftp-ftp-path ange-ftp-barf-if-not-directory ange-ftp-real-file-name-as-directory ange-ftp-get-files tbl all-completions file ange-ftp-file-entry-active-p completions mapcar #[(file) "└    \n\"ë½Æ ;½ë─┼ \"!½à    ╟P¬ü    )ç" [ange-ftp-get-hash-entry file tbl ent file-directory-p ange-ftp-expand-symlink dir "/"] 5] "/" ange-ftp-generate-root-prefixes ange-ftp-real-file-name-all-completions] 4 "\
  602. Documented as original."])
  603. (fset 'ange-ftp-file-name-completion #[(file dir) "└    !┬    !½┤├    !ê ┼ܽé┼ç╞    !╟    !╔╩ ╠#╬ ╨Ä╤     ╥$«ç╤     ╙$,ç    ╘ÿ½Ä╒ ╓ ╫╪┘ ╘\"\"ñ\"ç┌     \"ç" [expand-file-name dir ange-ftp-ftp-path ange-ftp-barf-if-not-directory file "" ange-ftp-real-file-name-as-directory ange-ftp-get-files tbl mapconcat #[(s) ";½å┴!┬Pç├ç" [s regexp-quote "$" "/"] 2] completion-ignored-extensions "\\|" completion-ignored-pattern match-data match-data ((store-match-data match-data)) ange-ftp-file-name-completion-1 ange-ftp-file-entry-not-ignored-p ange-ftp-file-entry-active-p "/" try-completion ange-ftp-generate-root-prefixes mapcar list ange-ftp-real-file-name-all-completions ange-ftp-real-file-name-completion] 8 "\
  604. Documented as original."])
  605. (fset 'ange-ftp-file-name-completion-1 #[(file tbl dir predicate) "└    \n #ë¡« ┼=½æ╞╟    \"!½à    ╔P¬¢┼¬ÿ└ \n #┼=½Ä╞╟ \"!½à ╔P¬ü )ç" [try-completion file tbl predicate bestmatch t file-directory-p expand-file-name dir "/"] 5 "\
  606. Internal subroutine for ange-ftp-file-name-completion.  Do not call this."])
  607. (fset 'ange-ftp-quote-filename #[(file) "└┬├     #ë½æ └    O┼     ╞OQ    ╟\\¬f )ç" [0 pos string-match "\\$" file "$" nil 2] 5 "\
  608. Quote `$' as `$$' in FILE to get it past function `substitute-in-file-name.'"])
  609. (fset 'ange-ftp-read-file-name-internal #[(string dir action) "└ë ─=½ìG╞V¡╒╟╚!!¬╬G╞U½ç    ¬Ö╚!╩!╦!ë½ç╠        \"¬é     ½å═\n    \"¬ƒ╦!╬\n    \"ë½Ä;½ë╤P!¬é**ç" [nil realdir name action lambda string 0 file-exists-p substitute-in-file-name dir file-name-nondirectory file-name-directory expand-file-name file-name-all-completions file-name-completion val specdir ange-ftp-quote-filename] 5 "\
  610. Documented as original."])
  611. (fset 'ange-ftp-re-read-dir #[(&optional dir) "½å┴!¬ç┬┴├ !!─!¡ì┼╟\"ê╔╩\"ç" [dir expand-file-name file-name-directory buffer-string ange-ftp-ftp-path nil ange-ftp-ls-cache-file ange-ftp-del-hash-entry ange-ftp-files-hashtable ange-ftp-get-files t] 3 "\
  612. Forces a re-read of the directory DIR.  If DIR is omitted then it defaults
  613. to the directory part of the contents of the current buffer." nil])
  614. (byte-code "└┴!¼é┬└ç" [boundp ange-ftp-overwrite-msg "Note: This function has been modified to work with ange-ftp."] 2)
  615. (fset 'ange-ftp-safe-documentation #[(fun) "└┴┬Åç" [nil (documentation fun) ((error))] 3 "\
  616. A documentation function that isn't quite as fragile."])
  617. (fset 'ange-ftp-overwrite-fn #[(fun) "└    !├─\nP!├╞\nP!ëK╔\n8╦ܼê╠\n8╦ܽâ═¬é9½êKë¬u╧!¼è    KMê    Mê╨!ëë¡ü╥Q<½⌐╒╓╫ÅêAAë@;½çá¬Åë@ABíêá)¬¬┘╒\"╠¢½è╠¢áê¬è╔¢╒Bíê█▄\"M).ç" [symbol-name fun name intern "ange-ftp-real-" saved "ange-ftp-" new nfun 3 command-line-args "dump" 4 "../etc/" exec-directory fboundp ange-ftp-safe-documentation doc-str "\n" ange-ftp-overwrite-msg ndoc-str nil (byte-code "ë@áç" [nfun] 2) ((error (byte-code "└    !\n    Mç" [copy-sequence nfun new] 2))) ndoc-cdr append new-code apply make-byte-code] 5 "\
  618. Replace FUN's function definition with ange-ftp-FUN's, saving the
  619. original definition as ange-ftp-real-FUN.  The original documentation is
  620. placed on the new definition suitably augmented."])
  621. (fset 'ange-ftp-overwrite-dired #[nil "└┴!¼å┬├!ê¬∩┬─!ê┬┼!ê┬╞!ê┬╟!ê┬┴!ê┬╚!ê╔╩KMê┬├!ê┬╦!ê┬╠!ê┬═!ê┬╬!ê┬╧!ê┬╨!ê┬╤!ê┬╥!ê└╙!½î┬╘!ê┬╒!ê┬╙!ê└╓!½å┬╓!ê¬Æ╫╪KMê╪┘Mê┌█KMê█▄Mê┬▌!ê┬▐!ç" [fboundp dired-ls ange-ftp-overwrite-fn dired-readin make-directory remove-directory diff dired-run-shell-command dired-call-process ange-ftp-dired-readin ange-ftp-tree-dired-readin dired-insert-headerline dired-move-to-filename dired-move-to-end-of-filename dired-get-filename dired-between-files dired-clean-directory dired-flag-backup-files dired-backup-diff dired-do-create-files dired-copy-file dired-create-files dired-compress-make-compressed-filename ange-ftp-real-dired-compress dired-compress ange-ftp-dired-compress ange-ftp-real-dired-uncompress dired-uncompress ange-ftp-dired-uncompress dired-find-file dired-revert] 2])
  622. (fset 'ange-ftp-add-hook #[(hook-var hook-function) "└    !½¡    Jë<½Ö\n@├=¼ô \n>?¡ÿ    \n½à \nB¬ü L¬ï \n=?¡à     \nDL)ç     Lç" [boundp hook-var value lambda hook-function] 4 "\
  623. Prepend hook-function to hook-var's value, if it is not already an element.
  624. hook-var's value may be a single function or a list of functions."])
  625. (byte-code "└┴!½î┬├!¼ç─┴┼\"ê¬ç╞├!ê┼ ê╟╚!½É╚K<½ç╚K@╔=¼ä╩╚!ê╟╦!½É╦K<½ç╦K@╔=¼ä╩╦!ê╟╠!½É╠K<½ç╠K@╔=¼ä╩╠!ê╩═!ê╩╬!ê╩╧!ê╩╨!ê╩╤!ê╩╥!ê╩╙!ê╩╘!ê╩╒!ê╩╓!ê╩╫!ê╩╪!ê╩┘!ê╩┌!ê╩█!ê╩▄!ê╩▌!ê╩▐!ê╩▀!ê╩α!ê╩ß!ê╩Γ!êπ$>¼åπ$B$└ç" [boundp dired-load-hook featurep dired ange-ftp-add-hook ange-ftp-overwrite-dired require fboundp make-directory autoload ange-ftp-overwrite-fn remove-directory diff insert-file-contents directory-files file-directory-p file-writable-p file-readable-p file-symlink-p delete-file read-file-name-internal verify-visited-file-modtime file-exists-p write-region backup-buffer copy-file rename-file file-attributes file-name-directory file-name-nondirectory file-name-as-directory directory-file-name expand-file-name file-name-all-completions file-name-completion ange-ftp-set-buffer-mode find-file-hooks] 3)
  626. (fset 'ange-ftp-fix-path-for-vms #[(path &optional reverse) "└ ┬Ä ½Σ─┼\"½╓╟ëë    \n╦ö½ë╦ö╦òO\n╠ö½ë╠ö╠òO    ═ö½ë═ö═òO    ½ì╬╧╨╤    ╦╥O\"\"    \n¡à╙\n╙Q    ë¡ü╙R+¬▄╘╒\"¬╒╟ëëë    \n─╫\"½æ╦╪òSO\n╪ò╟O┘!ë½ì╬╧╨┌╪╥O\"\"    █!\n    ¡ï▄\n?¡ü▌    ▐RQ,*ç" [match-data match-data ((store-match-data match-data)) reverse string-match "^\\([^:]+:\\)?\\(\\[.*\\]\\)?\\([^][]*\\)$" path nil file dir drive 1 2 3 apply concat mapcar #[(char) "┴U½ä┬├!ç┬!ç" [char 46 vector 47] 2] -1 "/" error "path %s didn't match" tmp "^/[^:]+:/" 0 file-name-directory #[(char) "┴U½ä┬├!ç┬!ç" [char 47 vector 46] 2] file-name-nondirectory "[" "." "]"] 8 "\
  627. Convert PATH from UNIX-ish to VMS.  If REVERSE given then convert from VMS
  628. to UNIX-ish."])
  629. (byte-code "└    ₧¼ä┬    B└ >¼ä└ B└ç" [vms ange-ftp-fix-path-func-alist (vms . ange-ftp-fix-path-for-vms) ange-ftp-dumb-host-types] 2)
  630. (fset 'ange-ftp-fix-dir-path-for-vms #[(dir-path) "┴ÿ½ä┬├!ç─┼\"½ä┬╞!ç╟!ç" [dir-path "/" error "Cannot get listing for fictitious \"/\" directory." string-match "^/[-A-Z0-9_$]+:/$" "Cannot get listing for device." ange-ftp-fix-path-for-vms] 3 "\
  631. Convert path from UNIX-ish to VMS ready for a DIRectory listing."])
  632. (byte-code "└    ₧¼ä┬    B├─!¼é┼┼ç" [vms ange-ftp-fix-dir-path-func-alist (vms . ange-ftp-fix-dir-path-for-vms) boundp ange-ftp-vms-host-regexp nil] 2)
  633. (fset 'ange-ftp-vms-host #[(host) "¡è┴ ├Ä─\"*ç" [ange-ftp-vms-host-regexp match-data match-data ((store-match-data match-data)) string-match host] 3 "\
  634. Return whether HOST is running VMS."])
  635. (defconst ange-ftp-vms-filename-regexp (concat "\\(\\([_A-Za-z0-9$]?\\|[_A-Za-z0-9$][_A-Za-z0-9$---]*\\)\\." "[_A-Za-z0-9$---]*;+[0-9]*\\)") "\
  636. Regular expression to match for a valid VMS file name in Dired buffer.
  637. Stupid freaking bug! Position of _ and $ shouldn't matter but they do.
  638. Having [A-Z0-9$_] bombs on filename _$$CHANGE_LOG$.TXT$ and $CHANGE_LOG$.TX
  639. Other orders of $ and _ seem to all work just fine.")
  640. (fset 'ange-ftp-parse-vms-filename #[nil "└    ┬├#¡à─ö─ò{ç" [re-search-forward ange-ftp-vms-filename-regexp nil t 0] 4 "\
  641. Extract the next filename from a VMS dired-like listing."])
  642. (fset 'ange-ftp-parse-vms-listing #[nil "└ ┴ebê─ ╞Ä╟ ë½¡╚╔\n\"½î╩\n╦ëöO╠ #ê¬û╩\n┴ #ê╚═\n\"½è╩\n╦ëöO┴ #ê╬yê¬M╩╧╠ #ê╩╨╠ #ê* *ç" [ange-ftp-make-hashtable nil file tbl match-data match-data ((store-match-data match-data)) ange-ftp-parse-vms-filename string-match "\\.\\(DIR\\|dir\\);[0-9]+" ange-ftp-put-hash-entry 0 t ";[0-9]+$" 1 "." ".."] 4 "\
  643. Parse the current buffer which is assumed to be in MultiNet FTP dir
  644. format, and return a hashtable as the result."])
  645. (byte-code "└    ₧¼ä┬    B├─Mê└₧¼ä╞B╟╚Mê└    ₧¼å╩    B    └ç" [vms ange-ftp-parse-list-func-alist (vms . ange-ftp-parse-vms-listing) ange-ftp-vms-delete-file-entry #[(path &optional dir-p) "½à┴\n├\"ç─ ╞Ä╟\n!ë╔ÿ½â╩¬é)╦╠\"¡╣═╬\n!\"롼╤ëöO╙╘!╠Q╓╪\"ê┘┌\"ê«å╪\"+)+ç" [dir-p ange-ftp-internal-delete-file-entry path t match-data match-data ((store-match-data match-data)) file-name-nondirectory file "" "." string-match ";[0-9]+$" ange-ftp-get-hash-entry file-name-directory ange-ftp-files-hashtable files 0 root "^" regexp-quote regexp nil versions ange-ftp-del-hash-entry mapatoms #[(sym) "└    \n├N\"¡â─ëç" [string-match regexp sym key t versions] 4]] 4] ange-ftp-delete-file-entry-alist (vms . ange-ftp-vms-delete-file-entry) ange-ftp-vms-add-file-entry #[(path &optional dir-p) "½à┴\n├\"ç─┼\n!\"ë¡▄╚\n!ë    ╩ÿ½â╦¬é    )    ╠ ╬Ä╧╨    \"½Ä╤    ╥ëöO╙#ꬪ╘╒    !╓Q╥┘┌\"êT╤    █▄!Q╙#ê**╤    ╙#))ç" [dir-p ange-ftp-internal-add-file-entry path t ange-ftp-get-hash-entry file-name-directory ange-ftp-files-hashtable files file-name-nondirectory file "" "." match-data match-data ((store-match-data match-data)) string-match ";[0-9]+$" ange-ftp-put-hash-entry 0 nil "^" regexp-quote ";\\([0-9]+\\)$" version regexp mapatoms #[(sym) "┴N├ \n\"¡î╞\n╟ö╟òO!]ë)ç" [sym key name string-match regexp version string-to-int 1] 5] ";" int-to-string] 6] ange-ftp-add-file-entry-alist (vms . ange-ftp-vms-add-file-entry)] 2)
  646. (fset 'ange-ftp-add-vms-host #[(host) "└    !?¡æ┬├    !─¡ü╞░╟ëç" [ange-ftp-vms-host host "^" regexp-quote "$" ange-ftp-vms-host-regexp "\\|" nil ange-ftp-host-cache] 5 "\
  647. Interactively adds a given HOST to ange-ftp-vms-host-regexp." (byte-code "└┴┬ «å ─=¡üë¡à╟!@)\"Cç" [read-string "Host: " buffer-file-name major-mode dired-mode dired-directory name ange-ftp-ftp-path] 5)])
  648. (byte-code "└┴Mê┬ ₧¼ä─ B└ç" [ange-ftp-vms-file-name-as-directory #[(name) "└ ┬Ä├─\"½å╞ëöO╟!*ç" [match-data match-data ((store-match-data match-data)) string-match "\\.\\(DIR\\|dir\\)\\(;[0-9]+\\)?$" name 0 ange-ftp-real-file-name-as-directory] 3] vms ange-ftp-file-name-as-directory-alist (vms . ange-ftp-vms-file-name-as-directory)] 2)
  649. (defconst ange-ftp-dired-vms-re-exe "^. [^     .]+\\.\\(EXE\\|exe\\)[; ]" "\
  650. Regular expression to use to search for VMS executable files.")
  651. (defconst ange-ftp-dired-vms-re-dir "^. [^     .]+\\.\\(DIR\\|dir\\)[; ]" "\
  652. Regular expression to use to search for VMS directories.")
  653. (byte-code "└    ₧¼å└\nB    B└ ₧¼å└ B B┼╞Mê└₧¼å╚B└ç" [vms ange-ftp-dired-re-exe-alist ange-ftp-dired-vms-re-exe ange-ftp-dired-re-dir-alist ange-ftp-dired-vms-re-dir ange-ftp-dired-vms-insert-headerline #[(dir) "è└┴!½â┬yê└├!½à`─ò|ê)┼!ç" [looking-at "^  wildcard " 1 "^[ \n    ]*[^\n]+\\][     ]*\n" 0 ange-ftp-real-dired-insert-headerline dir] 2] ange-ftp-dired-insert-headerline-alist (vms . ange-ftp-dired-vms-insert-headerline)] 2)
  654. (fset 'ange-ftp-dired-vms-move-to-filename #[(&optional raise-error eol) "└\n¼à└ê`├yê─\n╞#½à╟öb¬ç¡â╔╩!)ç" [nil case-fold-search eol 0 re-search-forward ange-ftp-vms-filename-regexp t 1 raise-error error "No file on this line"] 4 "\
  655. In dired, move to first char of filename on this line.
  656. Returns position (point) or nil if no filename on this line."])
  657. (byte-code "└    ₧¼ä┬    B├─Mê└₧¼ä╞B╟╚Mê└    ₧¼å╩    B    ╦╠Mê└₧¼å╬B╧╨Mê└₧¼å╥B╙╘Mê└₧¼å╓B└ç" [vms ange-ftp-dired-move-to-filename-alist (vms . ange-ftp-dired-vms-move-to-filename) ange-ftp-dired-vms-move-to-end-of-filename #[(&optional no-error eol) "└ëë` ¼çè└ê`)¡çè╞╟ ╚#)ë¼ç╔\n ╚#ê ¼æ `=½î╠\n½à═╬!¬ü╧!ê `=?¡ü`+ç" [nil case-fold-search hidden opoint eol selective-display search-forward "" t re-search-forward ange-ftp-vms-filename-regexp no-error error substitute-command-keys "File line is hidden, type \\[dired-hide-subdir] to unhide" "No file on this line"] 5] ange-ftp-dired-move-to-end-of-filename-alist (vms . ange-ftp-dired-vms-move-to-end-of-filename) ange-ftp-dired-vms-between-files #[nil "è└yêg┴Ü«Ég┬Ü«ï├uê─┼!«âg╞Ü)ç" [0 10 9 2 looking-at "Total of" 32] 2] ange-ftp-dired-between-files-alist (vms . ange-ftp-dired-vms-between-files) ange-ftp-vms-make-compressed-filename #[(name &optional reverse) "½Ñ┴┬ \"½å ─ëöOç┴┼ \"½å ─ëöOç┴╞ \"½à ─╟Oç ç┴┼ \"½ê ─ëöO╚Pç ╚Pç" [reverse string-match "-Z;[0-9]+$" name 0 ";[0-9]+$" "-Z$" -2 "-Z"] 3] ange-ftp-dired-compress-make-compressed-filename-alist (vms . ange-ftp-vms-make-compressed-filename) ange-ftp-dired-vms-ls-trim #[nil "ebê└┬ !ê)─yêe`|ê┼yê`d|ç" [nil case-fold-search re-search-forward ange-ftp-vms-filename-regexp 0 1] 2] ange-ftp-dired-ls-trim-alist (vms . ange-ftp-dired-vms-ls-trim) ange-ftp-vms-bob-version #[(name) "└ ┬Ä├─\"½ç╞ëöO¬ü*ç" [match-data match-data ((store-match-data match-data)) string-match ";[0-9]+$" name 0] 3] ange-ftp-bob-version-alist (vms . ange-ftp-vms-bob-version)] 2)
  658. (fset 'ange-ftp-dired-vms-clean-directory #[(keep &optional marker msg) "└    ½à┬    !¬ü ]ë─W½ä    [¬ü└    ─X½â ¬ü    ]«ü╟«é    ╩  ╨╤P#ê╥╙!ê ë½╕╒╓@A╫\"BëGë\\V½Å¢Z¢íê@Aíê*Aë¼H)╥┌!ê╨█P!-ç" [1 keep prefix-numeric-value dired-kept-versions 0 kept-old-versions msg "Cleaning" marker dired-del-marker nil file-version-assoc-list trample-marker action late-retention early-retention message " numerical backups (keeping %d late, %d old)..." dired-map-dired-file-lines ange-ftp-dired-vms-collect-file-versions fval q sort < sorted-v-list v-count ange-ftp-dired-vms-trample-file-versions " numerical backups...done"] 6 "\
  659. Flag numerical backups for deletion.
  660. Spares `dired-kept-versions' latest versions, and `kept-old-versions' oldest.
  661. Positive prefix arg KEEP overrides `dired-kept-versions';
  662. Negative prefix arg KEEP overrides `kept-old-versions' with KEEP made positive.
  663.  
  664. To clear the flags on these files, you can use \\[dired-flag-backup-files]
  665. with a prefix argument."])
  666. (byte-code "└    ₧¼ä┬    B├─Mê┼╞Mê╟╚Mê└    ₧¼å╩    B    ╦╠Mê└₧¼å╬B└ç" [vms ange-ftp-dired-clean-directory-alist (vms . ange-ftp-dired-vms-clean-directory) ange-ftp-dired-vms-collect-file-versions #[(fn) "└┴\n!8─┼ \"¡╝ ╞ëöO╟\n \"ë₧?¡⌐╔ !╩Pë G ═ ╬\n!\"╨╤\"ë¡è\nBBë,*)ç" [2 ange-ftp-ftp-path fn path string-match ";[0-9]+$" 0 ange-ftp-replace-path-component file-version-assoc-list file-name-nondirectory ";" base-versions bv-length file-name-all-completions file-name-directory possibilities mapcar #[(arg) "└┴\n #½ì─ö U½ç┼\n ╞O!ç─ç" [string-match "[0-9]+$" arg bv-length 0 string-to-int nil] 4] versions] 5] ange-ftp-dired-vms-trample-file-versions #[(fn) "└┴\n\"─ ¡ó╞\n╟ O\"ë¡û╔\n T─O!>?¡è╟yê╩╦!ê c*ç" [string-match ";[0-9]+$" fn start-vn nil base-version-list assoc 0 file-version-assoc-list string-to-int delete-char 1 trample-marker] 4] ange-ftp-dired-vms-flag-backup-files #[(&optional unflag-p) "└┴┬ë½å╚╔¬à\n╦╠┬ #,ç" [1 0 nil msg marker kept-old-versions dired-kept-versions unflag-p 32 "Unflagging" dired-del-marker "Cleaning" ange-ftp-dired-vms-clean-directory] 4] ange-ftp-dired-flag-backup-files-alist (vms . ange-ftp-dired-vms-flag-backup-files) ange-ftp-dired-vms-backup-diff #[(&optional switches) "└┴!┬┼╞ \"½┌ ╟ëöO╚ ╟öT┬O!┬    \n \nSë\n╟V½¥    ¼Ö ╠═\n!Q╬ !½â╧    \nSë\n¬_    +½Ü½î╤╥ !╥ !#¬Ä╤╥ !╥ !\"¬ä╙╘ \"*ç" [dired-get-filename no-dir nil bak file string-match ";[0-9]+$" 0 string-to-int found ver root ";" int-to-string file-exists-p t switches diff expand-file-name error "No previous version found for %s"] 6] ange-ftp-dired-backup-diff-alist (vms . ange-ftp-dired-vms-backup-diff)] 2)
  667. (fset 'ange-ftp-fix-path-for-mts #[(path &optional reverse) "└ ┬Ä ½╝─┼\"½«╟ë    ╩ö½ê╦╩òO    ╠ö½ë╠ö╠òO    ¡à═    ═QP*¬á╬╧\"¬Ö─╨\"½É╩ëòO╠ö╠òOP¬é*ç" [match-data match-data ((store-match-data match-data)) reverse string-match "^\\([^:]+:\\)?\\(.*\\)$" path nil file acct 1 0 2 "/" error "path %s didn't match" "^/\\([^:]+:\\)/\\(.*\\)$"] 4 "\
  668. Convert PATH from UNIX-ish to MTS. If REVERSE given then convert from
  669. MTS to UNIX-ish."])
  670. (byte-code "└    ₧¼ä┬    B└ç" [mts ange-ftp-fix-path-func-alist (mts . ange-ftp-fix-path-for-mts)] 2)
  671. (fset 'ange-ftp-fix-dir-path-for-mts #[(dir-path) "┴ÿ½ä┬├!ç─!ë┼ÿ½â╞¬î╟╚\"½à╞P¬ü)ç" [dir-path "/" error "Cannot get listing for fictitious \"/\" directory." ange-ftp-fix-path-for-mts "" "?" string-match ":$"] 4 "\
  672. Convert path from UNIX-ish to MTS ready for a DIRectory listing.
  673. Remember that there are no directories in MTS."])
  674. (byte-code "└    ₧¼ä┬    B└ >¼ä└ B─┼!¼é╞╞ç" [mts ange-ftp-fix-dir-path-func-alist (mts . ange-ftp-fix-dir-path-for-mts) ange-ftp-dumb-host-types boundp ange-ftp-mts-host-regexp nil] 2)
  675. (fset 'ange-ftp-mts-host #[(host) "¡è┴ ├Ä─\"*ç" [ange-ftp-mts-host-regexp match-data match-data ((store-match-data match-data)) string-match host] 3 "\
  676. Return whether HOST is running MTS."])
  677. (fset 'ange-ftp-parse-mts-listing #[nil "└ ebê┬ ─Ä┼╟╚#½¥╟ê╔╟xê`\n╦╟xê╠`\n{╟    #ê)═yê¬[*╠╬╚    #ê    )ç" [ange-ftp-make-hashtable tbl match-data match-data ((store-match-data match-data)) re-search-forward ange-ftp-date-regexp nil t " " end "-A-Z0-9_.!" ange-ftp-put-hash-entry 1 "."] 4 "\
  678. Parse the current buffer which is assumed to be in
  679. mts ftp dir format."])
  680. (byte-code "└    ₧¼ä┬    B└ç" [mts ange-ftp-parse-list-func-alist (mts . ange-ftp-parse-mts-listing)] 2)
  681. (fset 'ange-ftp-add-mts-host #[(host) "└    !?¡æ┬├    !─¡ü╞░╟ëç" [ange-ftp-mts-host host "^" regexp-quote "$" ange-ftp-mts-host-regexp "\\|" nil ange-ftp-host-cache] 5 "\
  682. Interactively adds a given HOST to ange-ftp-mts-host-regexp." (byte-code "└┴┬ «å ─=¡üë¡à╟!@)\"Cç" [read-string "Host: " buffer-file-name major-mode dired-mode dired-directory name ange-ftp-ftp-path] 5)])
  683. (fset 'ange-ftp-dired-mts-move-to-filename #[(&optional raise-error eol) "¼à┴ê`┬yê├ ┼#½ù╞┴wê╟wê╞wê╚╔!½ä┬òbê`ç\n¡â╦╠!ç" [eol nil 0 re-search-forward ange-ftp-date-regexp t " " "0-9:" looking-at "[A-Z0-9_.]+:" raise-error error "No file on this line"] 4 "\
  684. In dired, move to first char of filename on this line.
  685. Returns position (point) or nil if no filename on this line."])
  686. (byte-code "└    ₧¼ä┬    B├─Mê└₧¼ä╞B└ç" [mts ange-ftp-dired-move-to-filename-alist (mts . ange-ftp-dired-mts-move-to-filename) ange-ftp-dired-mts-move-to-end-of-filename #[(&optional no-error eol) "└ëë`è└ê`)¡çè╞╟ ╚#)ë¼ä╔ wê\n¼æ `=½î╦\n½à╠═!¬ü╬!ê `=?¡ü`+ç" [nil case-fold-search hidden opoint eol selective-display search-forward "" t "-A-Z0-9._!" no-error error substitute-command-keys "File line is hidden, type \\[dired-hide-subdir] to unhide" "No file on this line"] 5] ange-ftp-dired-move-to-end-of-filename-alist (mts . ange-ftp-dired-mts-move-to-end-of-filename)] 2)
  687. (fset 'ange-ftp-fix-path-for-cms #[(path &optional reverse) "└ ┬Ä ½à─P¬Ω╞╟\"½ß╚ëòO    ╩ö½╤╩ö╩òO╦    P╠\"╥#@½ä¬⌐╠\"╥#ë@½ä¬Ä╒╓╫    A##)+¬é    )¬â╪┘!*ç" [match-data match-data ((store-match-data match-data)) reverse "/" path string-match "^/\\([-A-Z0-9$*._]+\\)/\\([-A-Z0-9$._]+\\)?$" 1 minidisk 2 "cd " ange-ftp-get-process host user proc cmd file ange-ftp-raw-send-cmd msg result ange-ftp-error format "cd to minidisk %s failed: %s" error "Invalid CMS filename"] 8 "\
  688. Convert PATH from UNIX-ish to CMS. If REVERSE is given, convert
  689. from CMS to UNIX. Actually, CMS doesn't have a full pathname syntax,
  690. so we fudge things by sending cd's."])
  691. (byte-code "└    ₧¼ä┬    B└ >¼ä└ B└ç" [cms ange-ftp-fix-path-func-alist (cms . ange-ftp-fix-path-for-cms) ange-ftp-dumb-host-types] 2)
  692. (fset 'ange-ftp-fix-dir-path-for-cms #[(dir-path) "┴ÿ½ä┬├!ç─┼\"½▄╞ö╞òO╚    \n\" ╠P╬ö½ë╬ö╬òO¬ü╨╥ \"@½ä¬º╚    \n\" ╥ \"ë@½ä¬Ä╘    \n╒╓A##),ç┬╫!ç" [dir-path "/" error "Cannot get listing for fictitious \"/\" directory." string-match "^/\\([-A-Z0-9$*._]+\\)/\\([-A-Z0-9$._]+\\)?$" 1 minidisk ange-ftp-get-process host user proc "cd " cmd 2 path "*" file ange-ftp-raw-send-cmd result ange-ftp-error format "cd to minidisk %s failed: " "Invalid CMS pathname"] 8 "\
  693. Convert path from UNIX-ish to VMS ready for a DIRectory listing."])
  694. (byte-code "└    ₧¼ä┬    B└ç" [cms ange-ftp-fix-dir-path-func-alist (cms . ange-ftp-fix-dir-path-for-cms)] 2)
  695. (defvar ange-ftp-cms-host-regexp nil "\
  696. Regular expression to match hosts running the CMS operating system.")
  697. (fset 'ange-ftp-cms-host #[(host) "¡è┴ ├Ä─\"*ç" [ange-ftp-cms-host-regexp match-data match-data ((store-match-data match-data)) string-match host] 3 "\
  698. Return whether the host is running CMS."])
  699. (fset 'ange-ftp-add-cms-host #[(host) "└    !?¡æ┬├    !─¡ü╞░╟ëç" [ange-ftp-cms-host host "^" regexp-quote "$" ange-ftp-cms-host-regexp "\\|" nil ange-ftp-host-cache] 5 "\
  700. Interactively adds a given HOST to ange-ftp-cms-host-regexp." (byte-code "└┴┬ «å ─=¡üë¡à╟!@)\"Cç" [read-string "Host: " buffer-file-name major-mode dired-mode dired-directory name ange-ftp-ftp-path] 5)])
  701. (fset 'ange-ftp-parse-cms-listing #[nil "└ ebê┬ ─Ä┼╞╟╚#½û╔╩ö╩ò{╦╠ö╠ò{Q╟    #ê╩yê¬c╔╦╚    #ê*    )ç" [ange-ftp-make-hashtable tbl match-data match-data ((store-match-data match-data)) re-search-forward "^\\([-A-Z0-9$_]+\\) +\\([-A-Z0-9$_]+\\) +[VF] +[0-9]+ " nil t ange-ftp-put-hash-entry 1 "." 2] 5 "\
  702. Parse the current buffer which is assumed to be a CMS directory listing."])
  703. (byte-code "└    ₧¼ä┬    B└ç" [cms ange-ftp-parse-list-func-alist (cms . ange-ftp-parse-cms-listing)] 2)
  704. (defconst ange-ftp-dired-cms-re-exe "^. [-A-Z0-9$_]+ +EXEC " "\
  705. Regular expression to use to search for CMS executables.")
  706. (byte-code "└    ₧¼å└\nB    B├─Mê└₧¼ä╞B└ç" [cms ange-ftp-dired-re-exe-alist ange-ftp-dired-cms-re-exe ange-ftp-dired-cms-insert-headerline #[(dir) "└cê┴uê┬ !ç" ["\n" -1 ange-ftp-real-dired-insert-headerline dir] 2] ange-ftp-dired-insert-headerline-alist (cms . ange-ftp-dired-cms-insert-headerline)] 2)
  707. (fset 'ange-ftp-dired-cms-move-to-filename #[(&optional raise-error eol) "¼à┴ê`┴├yê─┼╞#½å├öTb¬ç¡â╚╔!)ç" [eol nil case-fold-search 0 re-search-forward " [-A-Z0-9$_]+ +[-A-Z0-9$_]+ +[VF] +[0-9]+ " t raise-error error "No file on this line"] 4 "\
  708. In dired, move to the first char of filename on this line."])
  709. (byte-code "└    ₧¼ä┬    B├─Mê└₧¼ä╞B╟╚Mê└    ₧¼å╩    B    ╦╠Mê└₧¼å╬B╧╨!ç" [cms ange-ftp-dired-move-to-filename-alist (cms . ange-ftp-dired-cms-move-to-filename) ange-ftp-dired-cms-move-to-end-of-filename #[(&optional no-error eol) "`└ë ¼çè└ê`)¡çè╞╟ ╚#)ë½î    ?¡ú╩╦╠!!¬£═ wê╬ wê═ wê `=½è    ?¡å╩╧!¬ü`+ç" [nil hidden case-fold-search opoint eol selective-display search-forward "" t no-error error substitute-command-keys "File line is hidden, type \\[dired-hide-subdir] to unhide" "-A-Z0-9$_" " " "No file on this line"] 5] ange-ftp-dired-move-to-end-of-filename-alist (cms . ange-ftp-dired-cms-move-to-end-of-filename) ange-ftp-cms-make-compressed-filename #[(name &optional reverse) "½ì┴┬ \"½à ─┼Oç ç ╞Pç" [reverse string-match "-Z$" name 0 -2 "-Z"] 3] ange-ftp-dired-compress-make-compressed-filename-alist (cms . ange-ftp-cms-make-compressed-filename) ange-ftp-dired-cms-get-filename #[(&optional localp no-error-if-not-filep) "└    \n\"ë¡û─┼ \"½Å ╞╟òO╚ ╔ö╔òOQ¬ü )ç" [ange-ftp-real-dired-get-filename localp no-error-if-not-filep name string-match "^\\([^ ]+\\) +\\([^ ]+\\)$" 0 1 "." 2] 6] ange-ftp-dired-get-filename-alist (cms . ange-ftp-dired-cms-get-filename) provide ange-ftp] 2)
  710.